HOW TO:获取在C ++中的NavigationView中选择的项目

时间:2019-01-15 15:18:48

标签: c++ uwp c++-cx navigationview

我是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中选择了哪个项目来显示相关页面。

谢谢

1 个答案:

答案 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";
}
相关问题