2015-05-17 3 views
0

Я пытаюсь реализовать пользовательскую навигационную систему для WinRT (в частности - Windows Phone 8.1). Вместо обычной навигации по страницам я хочу создать HostPage, который будет включать один кадр. Я превращу каждую страницу в UserControl, и служба навигации установит Frame HostPage в кешированный экземпляр UserControl. Я отлично работаю, но у меня проблема с BottomAppBar. Я не могу понять, как определить CommandBar в UserControl и связать его с HostPage. Есть идеи?WinRT - кадровая навигация и AppBars

+0

Вместо UserControl вы должны использовать страницу как обычно. –

+0

Посмотрите на https://github.com/faisalr/HamburgerBinding, он передает кадр конструктору узла. – Faisal

+0

Спасибо, но это не то, что я ищу. Я хочу одну, постоянную страницу. – eggplant

ответ

0

Одно из возможных решений:

Определить его содержимое как DataTemplate в ресурсах UserControl в (с общим ключом). Затем в HostPage вы можете получить его из UserControl.Resources [YourCommonKey] и установить его как содержимое CommandBar.

Используйте этот метод для загрузки содержимого DataTemplate в: https://msdn.microsoft.com/en-us/library/system.windows.frameworktemplate.loadcontent%28v=vs.110%29.aspx

+0

Спасибо, но, к сожалению, это не сработает - AppBar всегда пуст. AppBar определяется в HostPage так: ' '. UserControl: http://pastebin.com/DHzv7Qus. Вы не знаете, как должны выглядеть эти определения? – eggplant

+0

Можете ли вы показать мне свой код для добавления элементов из ресурсов userconotrol в панель приложений? –

+0

Уверен, примерно это выглядит так: http://pastebin.com/1ZbfqrRs. – eggplant

0

Не использовать XAML для создания Page.BottomAppBar. Использование:

CommandBar bar = new CommandBar(); 
AppBarButton appBarButton = new AppBarButton(); 
BitmapIcon bi = new BitmapIcon(); 
bi.UriSource = item.Uri; 
appBarButton.Icon = bi; 
appBarButton.Label = item.Text; 
appBarButton.Click += (sender, e) => item.Action(); 
yourPageRef.BottomAppBar = bar; 
ApplicationBar.PrimaryCommands.Add(appBarButton); 

Тогда вы можете хранить ссылки везде, где захотите. Идея состоит в том, что будет только один CommandBar, и вы можете очищать и добавлять кнопки в зависимости от UserControl.

Смежные вопросы