КАК: получить выбранный элемент в NavigationView в C++
Я новичок в 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 ответ
Это на самом деле связано с 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";
}