Zix*_*uan 2 navigationview uwp
我有一个 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>
Run Code Online (Sandbox Code Playgroud)
如您所见,另外两个框架是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));
}
Run Code Online (Sandbox Code Playgroud)
尽管页面导航正确,但SelectedIteminNavigationView.MenuItem仍然是Channels,我如何将其更改为Playerin 函数?
这里的说明图:说明图
如您所见,框架实际上是PlayerPage而SelectedItem是ChannelsPage。
您可以创建一个public用于设置方法SelectedItem的NavigationView。
在MainPage.xaml.cs:
public void SetSelectedNavigationItem(int index)
{
MyNavigationView.SelectedItem = MyNavigationView.MenuItems[index];
}
Run Code Online (Sandbox Code Playgroud)
现在,导航到 后,PlayerPage您可以执行以下操作:
Frame appFrame = Window.Current.Content as Frame;
MainPage mainPage = appFrame.Content as MainPage;
mainPage.SetSelectedNavigationItem( 1 );
Run Code Online (Sandbox Code Playgroud)
当然,最好能更简单地访问主页,例如static在 上创建方法MainPage:
public static MainPage GetCurrent()
{
Frame appFrame = Window.Current.Content as Frame;
return appFrame.Content as MainPage;
}
Run Code Online (Sandbox Code Playgroud)
另一个改进是创建一个枚举来替换“神奇的”索引整数。
| 归档时间: |
|
| 查看次数: |
2156 次 |
| 最近记录: |