我有3个按钮的NavigationView
<NavigationView x:Name="nvTopLevelNav"
Margin="0,0,0,0"
ItemInvoked="nvTopLevelNav_ItemInvoked"
IsTabStop="False"
AlwaysShowHeader="False"
VerticalContentAlignment="Stretch"
HorizontalContentAlignment="Stretch"
VerticalAlignment="Stretch"
Grid.RowSpan="1"
Grid.Row="1"
Grid.Column="1"
Grid.ColumnSpan="1"
Padding="0,0,0,0" >
<NavigationView.MenuItems>
<NavigationViewItem Tag="Nav_BlankPage1" VerticalContentAlignment="Center">
<TextBlock Tag="Nav_BlankPage1" Text="Nav_BlankPage1" />
</NavigationViewItem>
<NavigationViewItem Tag="Nav_BlankPage2" VerticalContentAlignment="Center">
<TextBlock Tag="Nav_BlankPage2" Text="Nav_BlankPage2"/>
</NavigationViewItem>
<NavigationViewItem Tag="Nav_BlankPage3" VerticalContentAlignment="Center">
<TextBlock Tag="Nav_BlankPage3" Text="Nav_BlankPage3" />
</NavigationViewItem>
</NavigationView.MenuItems>
<Frame x:Name="MainFrame"
Grid.Column="1"
Grid.Row="1"
VerticalContentAlignment="Stretch" VerticalAlignment="Stretch" Padding="0,0,0,0">
<RelativePanel Grid.Column="0"
Grid.Row="1">
</RelativePanel>
</Frame>
</NavigationView>
MainPage后面的代码:
private void nvTopLevelNav_ItemInvoked(NavigationView sender, NavigationViewItemInvokedEventArgs args)
{
if (args.IsSettingsInvoked)
{
}
else
{
TextBlock ItemContent = args.InvokedItem as TextBlock;
if (ItemContent != null)
{
switch (ItemContent.Tag)
{
case "Nav_BlankPage1":
MainFrame.Navigate(typeof(BlankPage1));
break;
case "Nav_BlankPage2":
MainFrame.Navigate(typeof(BlankPage2));
break;
case "Nav_BlankPage3":
MainFrame.Navigate(typeof(BlankPage3));
break;
case "Nav_Settings":
break;
}
}
}
}
每个页面都有3个按钮(第一个显示在代码后面):
private void btnBlankPage1_Click(object sender, RoutedEventArgs e)
{
var _frame = (Frame)Window.Current.Content;
_frame.Navigate(typeof(BlankPage1));
}
如果我使用NavigationView
按钮,一切都很好,但是如果我使用页面NavigationView
上的按钮,则消失了。
你能澄清一下吗?
答案 0 :(得分:3)
原因是您使用错误的Frame
进行导航。在您的情况下,UI树看起来像这样:
当您浏览NavigationView
菜单时,就可以了,就像使用内部MainFrame
一样。但是,在另一页上,将Frame
放在Window
((Frame)Window.Current.Content
)的根目录中并进行导航。这样可以浏览出包含NavigationView
的页面,并在BlankPage1
所在的位置导航,因此NavigationView
消失了。
相反,您必须使用MainFrame
中的NavigationView
进行导航。最简单的方法是将Frame
属性添加到包含NavigationView
的页面,然后将其用于导航:
public static Frame AppFrame { get; private set; }
然后在页面构造函数中为其分配:
AppFrame = MainFrame;
现在您可以使用它进行导航:
NavigationViewPage.AppFrame.Navigate(typeof(BlankPage1));
NavigationViewPage
所在的页面包含NavigationView
最后一个便条-您不必为发布问题而道歉,这是该网站的目的;-)。