NavigationView中的项目选择

时间:2018-08-17 09:45:29

标签: uwp navigationview

在NavigationView中,我有3个项目。如果用户单击第二个按钮,我想清除表单并重定向(例如,使用MainFrame.Navigate(typeof(BlankPage1));)到第一个项目。重定向工作正常,但NavigationViewItem的选择保留在第二个NavigationViewItem上。 相同的代码:

nvTopLevelNav.SelectedItem = nvTopLevelNav.MenuItems[index];
(nvTopLevelNav.SelectedItem as NavigationViewItem).IsSelected = true;

没有帮助。有什么办法可以改变选择?

顺便说一句,如果用于导航,我使用MainPage(MainFrame.Navigate(typeof(MainPage));)我将获得第二个具有正确选择的Menu。对我来说,对象似乎没有正确刷新。你能澄清一下吗?

2 个答案:

答案 0 :(得分:1)

您可以尝试使用NavigationViewTapped事件来更改其SelectedItem。请参见以下代码。

Xaml:

<NavigationView x:Name="nvTopLevelNav" Tapped="nvTopLevelNav_Tapped" .../>

后面的代码:

private void nvTopLevelNav_Tapped(object sender, TappedRoutedEventArgs e)
{
    Debug.WriteLine(nvTopLevelNav.SelectedItem);
    NavigationViewItem ItemContent = nvTopLevelNav.SelectedItem as NavigationViewItem;
    if (ItemContent != null)
    {
        switch (ItemContent.Tag)
        {
            case "Nav_BlankPage1":
                MainFrame.Navigate(typeof(BlankPage1));

                break;
            case "Nav_BlankPage2":
                MainFrame.Navigate(typeof(BlankPage1));
                MyItem = nvTopLevelNav.MenuItems.ElementAt(0) as NavigationViewItem;
                nvTopLevelNav.SelectedItem = MyItem;
                break;
            case "Nav_BlankPage3":
                MainFrame.Navigate(typeof(BlankPage3));
                break;
            case "Nav_Settings":
                break;
        }
    }
}

答案 1 :(得分:0)

使用transform: scale(1.5); 设置SelectedItem对我有用:

Dispatcher

Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { MainNavigationView.SelectedItem = MenuItem_Home; }); 方法用于在UI线程上执行代码,但也可以从UI线程调用它。