gpt4 book ai didi

uwp - 导航到其他框架(UWP)时如何更改选定的导航 View 项目?

转载 作者:行者123 更新时间:2023-12-02 03:41:54 24 4
gpt4 key购买 nike

我有一个 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 中列出了一些 channel ,通过单击其中一项,框架将导航到 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));
}

虽然页面导航正确,但NavigationView.MenuItem中的SelectedItem仍然是Channels,我如何将其更改为Player 在函数中?

此处的说明图片:explanation image

如您所见,框架实际上是 PlayerPage,而 SelectedItemChannelsPage

最佳答案

您可以创建一个 public 方法来设置 NavigationViewSelectedItem

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

当然,如果能够更简单地访问主页会更好,例如在 MainPage 上创建 static 方法:

public static MainPage GetCurrent()
{
Frame appFrame = Window.Current.Content as Frame;
return appFrame.Content as MainPage;
}

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

关于uwp - 导航到其他框架(UWP)时如何更改选定的导航 View 项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48322864/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com