簡體   English   中英

NavigationView使用后退按鈕更改所選項目

[英]NavigationView change selected item using back button

我在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;
            }
        }
    }

在此輸入圖像描述

解決了,使用NavigationViewExtensions.SetSelectedIndex(NavigationView,index); 來自Microsoft.Toolkit.Uwp.UI.Extensions 4.0.0,因為不推薦使用5.0.0版本

我沒有在你的代碼中看到任何問題。 有幾種方法可以幫助排除故障:

  1. 調試並確保MenuItem項不為null。

  2. 單擊后退按鈕時,請嘗試使用代碼直接選擇主頁或相機

    private void OnBackRequested(object sender,BackRequestedEventArgs e){string nombre =“Camera”; MenuItem item = subItemsMenu.FirstOrDefault(nom => nom.NombrePantalla.Equals(nombre)); navView.SelectedItem = item; }

  3. 將SelectionChanged =“nav_SelectionChanged”添加到XAML,然后檢查SelectionChanged

  4. 發布一個簡單的應用程序,可以重現您的問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM