我有一个UWP,MainPage
是NavigationView
。
<NavigationView x:Name="MyNavigationView"
ItemInvoked="MyNavigationView_OnItemInvoked"
>
<NavigationView.MenuItems>
<NavigationViewItem Icon="List" Content="Channels" Tag="channels"/>
<NavigationViewItem Icon="Video" Content="Player" Tag="player"/>
</NavigationView.MenuItems>
<Frame x:Name="MyFrame">
<Frame.ContentTransitions>
<TransitionCollection>
<NavigationThemeTransition/>
</TransitionCollection>
</Frame.ContentTransitions>
</Frame>
</NavigationView>
如您所见,其他两个框架为ChannelsPage
和PlayerPage
。我在ChannelsPage
列出了一些频道,点击一个项目,该框架将导航到PlayerPage
:
private void EachTvProgram_Click(object sender, ItemClickEventArgs e)
{
var nextPlaying = (TvProgram) e.ClickedItem;
TvProgramManager.PlayingProgram = nextPlaying.Title;
ChannelDetails.IsPaneOpen = false;
Frame.Navigate(typeof(PlayerPage));
}
虽然页面导航正确,SelectedItem
中的NavigationView.MenuItem
仍为Channels
,如何在功能中将其更改为Player
?
此处的说明图片:explanation image
如您所见,该框架实际为PlayerPage
而SelectedItem
为ChannelsPage
。
答案 0 :(得分:2)
您可以创建public
方法来设置SelectedItem
的{{1}}。
在NavigationView
:
MainPage.xaml.cs
现在,在导航到public void SetSelectedNavigationItem(int index)
{
MyNavigationView.SelectedItem = MyNavigationView.MenuItems[index];
}
后,您可以执行以下操作:
PlayerPage
当然,最好让对主页面的访问更简单,比如在Frame appFrame = Window.Current.Content as Frame;
MainPage mainPage = appFrame.Content as MainPage;
mainPage.SetSelectedNavigationItem( 1 );
上创建static
方法:
MainPage
另一个改进是创建一个枚举来替换“神奇的”索引整数。