NavigationView 使用后退按钮更改所选项目

我在 UWP 应用程序中使用导航视图控件,问题是当我单击后退按钮时,焦点元素不会更改为内容框架中显示的项目。例如,点击的元素是 camara、store、musica,然后两次返回按钮以在 contentframe 元素中显示 camara,但 musica 仍然具有焦点(蓝色矩形)


private void FrameNavigated( object sender, NavigationEventArgs e )

    {

        var currentView = SystemNavigationManager.GetForCurrentView();

        if ( ContentFrame.CanGoBack )

        {

            currentView.AppViewBackButtonVisibility = AppViewBackButtonVisibility.Visible;

        }

        else

        {

            currentView.AppViewBackButtonVisibility = AppViewBackButtonVisibility.Collapsed;

        }

    }


private void OnBackRequested( object sender, BackRequestedEventArgs e )

    {

        if ( ContentFrame.CanGoBack )

        {

            e.Handled = true;


            PageStackEntry pageStackEntry = ContentFrame.BackStack.LastOrDefault();


            ContentFrame.GoBack();


            if ( pageStackEntry != null )

            {

                string nombre = pageStackEntry.SourcePageType.Name;

                MenuItem item = subItemsMenu.FirstOrDefault(nom => nom.NombrePantalla.Equals(nombre));


                navView.SelectedItem = item;

                navView.Header = item.Encabezado;

            }

        }

    }

http://img1.mukewang.com/62a5a21d000192b805250359.jpg

至尊宝的传说
浏览 168回答 2
2回答

红颜莎娜

已解决,使用 NavigationViewExtensions.SetSelectedIndex(NavigationView, index); 来自 Microsoft.Toolkit.Uwp.UI.Extensions 4.0.0,因为 5.0.0 版本已弃用

慕桂英3389331

我在您的代码中没有看到任何问题。几种方法可能有助于排除故障:调试并确保 MenuItem 项不为空。单击后退按钮时,尝试通过您的代码直接选择家庭或相机私人无效OnBackRequested(对象发送者,BackRequestedEventArgs e){字符串名词=“相机”;MenuItem item = subItemsMenu.FirstOrDefault(nom => nom.NombrePantalla.Equals(nombre)); navView.SelectedItem = 项目;}将 SelectionChanged="nav_SelectionChanged" 添加到 XAML,然后检查SelectionChanged发布一个可以重现您的问题的简单应用程序
打开App,查看更多内容
随时随地看视频慕课网APP