导航到其他帧(UWP)时如何更改选定的导航视图项?

时间:2018-01-18 13:46:42

标签: uwp navigationview

我有一个UWP,MainPageNavigationView

<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>

如您所见,其他两个框架为ChannelsPagePlayerPage。我在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

如您所见,该框架实际为PlayerPageSelectedItemChannelsPage

1 个答案:

答案 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

另一个改进是创建一个枚举来替换“神奇的”索引整数。