Я создаю приложение SL4. У меня есть два элемента управления, верхняя панель поиска и нижняя панель избранного, которые я хотел бы видеть на каждой странице. Я не уверен, что лучший способ сделать это.
Мой текущий подход использует навигационную рамку в качестве корневого визуала:
App.xaml.cs:
this.RootVisual = new NavFrame();
NevFrame.xaml
<Grid x:Name="LayoutRoot" Background="White">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<my:TopSearchBar x:Name="topSearchBar" Grid.Row="0"/>
<navigation:Frame x:Name="navigationFrame" Source="/HomePage.xaml" Grid.Row="1"/>
<my:BottomFavoritesBar x:Name="bottomFavoritesBar" Grid.Row="2"/>
</Grid>
Тогда я бы изменил страницы внутри фрейма, оставив постоянные элементы на месте. Это правильный подход или есть какой-то другой предпочтительный шаблон?
Однако, если я сделаю это, я не уверен, как позволить пользовательским элементам управления TopSearchBar
и BottomFavoritesBar
выполнять навигацию. (В общем, я не уверен, как сделать навигацию прямо из UserControl
.)
Когда TopSearchBar
был участником каждой страницы, у меня был бы этот код в коде каждой страницы:
topSearchBar.ParentPage = this;
TopSearchBar
может затем использовать эту ссылку для навигации:
ParentPage.NavigationService.Navigate(new Uri("/SearchPage.xaml?q=" + searchBox.Text, UriKind.Relative));
Есть ли лучший способ сделать это? Это немного неловко. Если для навигации требуется ссылка на страницу, как я могу передать эту ссылку из NavFrame
?