Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# NavigationView使用后退按钮更改所选项目_C#_.net_Uwp - Fatal编程技术网

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

C# NavigationView使用后退按钮更改所选项目,c#,.net,uwp,C#,.net,Uwp,我在UWP应用程序中使用navigationview控件,问题是当我单击后退按钮时,焦点元素不会更改为contentframe中显示的项目。例如,单击的元素是camara、store、musica,然后单击back按钮两次以在contentframe元素中显示camara,但musica仍然具有焦点(蓝色矩形) 我没有发现您的代码中有任何问题。以下几种方法有助于排除故障: 调试并确保MenuItem项不为null 单击“上一步”按钮后,请尝试直接按代码选择“主页”或“照相机” 返回请求的专用vo

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


我没有发现您的代码中有任何问题。以下几种方法有助于排除故障:

  • 调试并确保MenuItem项不为null

  • 单击“上一步”按钮后,请尝试直接按代码选择“主页”或“照相机”

    返回请求的专用void(对象发送方,返回请求的目标) { 字符串nombre=“照相机”; MenuItem item=subItemsMenu.FirstOrDefault(nom=>nom.nombreplantalla.Equals(nombre)); navView.SelectedItem=项目; }

  • 将SelectionChanged=“nav_SelectionChanged”添加到XAML中,然后选中

  • 发布一个简单的应用程序,可以重新解决你的问题
  • 解决,使用
    NavigationViewExtensions.SetSelectedIndex(NavigationView,索引);从Microsoft.Toolkit.Uwp.UI.Extensions 4.0.0开始,由于5.0.0版本已被弃用

    如果您已经解决了问题,请稍后访问此线程的方便用户将其视为已接受,谢谢理解。
    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;
                }
            }
        }