КАК: получить выбранный элемент в NavigationView в C ++ - PullRequest
0 голосов
/ 15 января 2019

Я новичок в 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 голосов
/ 17 января 2019

Это на самом деле связано с 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";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...