C# 嵌套框架导航
下面是我的问题情况的一个简化示例 MainPage.xamlC# 嵌套框架导航,c#,xaml,uwp,navigation,C#,Xaml,Uwp,Navigation,下面是我的问题情况的一个简化示例 MainPage.xaml <page ... xmlns:helpers="using:MyNamespace.Helpers" xmlns:views="using:MyNamespace.Views" ...> <NavigationView Name="MainNav" PaneDisplayMode="LeftCompact"
<page
...
xmlns:helpers="using:MyNamespace.Helpers"
xmlns:views="using:MyNamespace.Views"
...>
<NavigationView Name="MainNav"
PaneDisplayMode="LeftCompact"
...>
<NavigationView.MenuItems>
<NavigationViewItem Content="OtherPage"
helpers:NavHelper.NavigateTo="views:OtherPage">
</NavigationViewItem>
... other NavigationViewItem's...
</NavigationView.MenuItems>
<Frame Name="MainFrame".../>
</page>
OtherPage.xaml-在视图文件夹中
<page
...
xmlns:helpers="using:MyNamespace.Helpers"
xmlns:views="using:MyNamespace.Views"
...>
<NavigationView Name="OtherNav"
PaneDisplayMode="Top"
...>
<NavigationView.MenuItems>
<NavigationViewItem Content="Other Page"
helpers:NavHelper.NavigateTo="views:OtherPage_1">
</NavigationViewItem>
... other NavigationViewItem's...
</NavigationView.MenuItems>
<Frame Name="OtherFrame".../>
</page>
Navigate.cs-在服务文件夹中
namespace MyNamespace.Services
{
static class Navigate
{
public static void NavView_ItemInvoked(NavigationView sender, NavigationViewItemInvokedEventArgs args)
{
\\ do some navigation logic
...
private _frame = ???;
...
_frame.Navigate(_page, null, transitionInfo);
}
好的,在所有这些示例代码之后,这里是我的问题。在NavView\u items invoked
事件处理程序中,我需要能够根据调用的NavigationViewItem
设置\u frame
;到大型机
或其他帧
注意:我可能会离开我应用程序中的嵌套框架,但我首先想弄清楚这一点,因为我不想浪费学习机会。当触发ItemInvoked事件时,您可以从中获取NavigationView实例。NavigationView具有Content属性,它实际上表示当前触发的navigationView中的帧。因此,您可以通过Frame.name获取大型机或其他帧
static class MyNavigate
{
public static void NavView_ItemInvoked(NavigationView sender, NavigationViewItemInvokedEventArgs args)
{
Frame currentFrame = sender.Content as Frame;
String name = currentFrame.Name;
if (name == "OtherFrame")
{
currentFrame.Navigate(.......);
}
else {
currentFrame.Navigate(.......);
}
}
}
谢谢你,费旺。在我的脑海中,框架应该被内容所包含,比如
sender.Content.myFrame
。显然,我错了。
namespace MyNamespace.Services
{
static class Navigate
{
public static void NavView_ItemInvoked(NavigationView sender, NavigationViewItemInvokedEventArgs args)
{
\\ do some navigation logic
...
private _frame = ???;
...
_frame.Navigate(_page, null, transitionInfo);
}
static class MyNavigate
{
public static void NavView_ItemInvoked(NavigationView sender, NavigationViewItemInvokedEventArgs args)
{
Frame currentFrame = sender.Content as Frame;
String name = currentFrame.Name;
if (name == "OtherFrame")
{
currentFrame.Navigate(.......);
}
else {
currentFrame.Navigate(.......);
}
}
}