我是UWP的新手,我认为有一个简单的问题需要解决,但是我发现的示例没有用。我正在UWP项目中使用导航视图,并且希望能够切换页面并在框架中显示。当我在导航视图中选择一个项目时,将触发ItemInvoked事件。我知道将页面加载到下面包含的框架中的代码。
void enVigilServer::MainPage::nvSample_ItemInvoked(Windows::UI::Xaml::Controls::NavigationView^ sender, Windows::UI::Xaml::Controls::NavigationViewItemInvokedEventArgs^ args)
{
this->contentFrame->Navigate(Windows::UI::Xaml::Interop::TypeName(SysConf::typeid));
}
我的问题是如何确定我从NavigationView中选择了哪个项目来显示相关页面。
谢谢
答案 0 :(得分:0)
它实际上与c ++-cx有关,我将把这个标签用于您的问题。
为简化导航,我们可以在应用程序中使用标签系统。请参见以下代码:
<NavigationView x:Name="NavigationViewControl" ItemInvoked="NavigationViewControl_ItemInvoked" >
<NavigationView.MenuItems>
<NavigationViewItem Content="A" x:Name="A" Tag="tga" />
<NavigationViewItem Content="B" x:Name="B" Tag="tgb"/>
<NavigationViewItem Content="C" x:Name="C" />
</NavigationView.MenuItems>
<Frame x:Name="contentFrame"/>
</NavigationView>
这是一个示例,我们将标记添加到项目中。然后,我们将在调用代码中执行以下操作:
void NavigationVWCX::MainPage::NavigationViewControl_ItemInvoked(Windows::UI::Xaml::Controls::NavigationView^ sender, Windows::UI::Xaml::Controls::NavigationViewItemInvokedEventArgs^ args)
{
auto navitemtag = args->InvokedItemContainer->Tag->ToString();
if (navitemtag == "tga")
{
contentFrame->Navigate(Windows::UI::Xaml::Interop::TypeName(PageA::typeid));
}
if (navitemtag == "tgb")
{
contentFrame->Navigate(Windows::UI::Xaml::Interop::TypeName(PageB::typeid));
}
}
顺便说一句,别忘了还要在页面上添加标签,例如:
PageB::PageB()
{
InitializeComponent();
this->Tag = "tgb";
}