NavigationView изменить выбранный элемент с помощью кнопки назад - PullRequest
0 голосов
/ 14 декабря 2018

Я использую элемент управления навигацией в приложении UWP, дело в том, что когда я нажимаю кнопку «Назад», фокусированный элемент не изменяется на элемент, отображаемый в кадре содержимого.Например, кликаемыми элементами были camara, store, musica, затем дважды кнопка «Назад» для отображения camara в элементе contentframe, но 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;
            }
        }
    }

enter image description here

Ответы [ 2 ]

0 голосов
/ 15 декабря 2018

Решено с использованием NavigationViewExtensions.SetSelectedIndex (NavigationView, index);от Microsoft.Toolkit.Uwp.UI.Extensions 4.0.0, поскольку версия 5.0.0 устарела

0 голосов
/ 14 декабря 2018

Я не видел никаких проблем в вашем коде.Устранение неполадок может помочь несколькими способами:

  1. Отладка и убедитесь, что элемент MenuItem не равен нулю.

  2. Когда нажата кнопка «Назад», попробуйте выбрать homeили камера напрямую по вашему коду

    private void OnBackRequested (отправитель объекта, BackRequestedEventArgs e) {string nombre = "Camera";MenuItem item = subItemsMenu.FirstOrDefault (nom => nom.NombrePantalla.Equals (nombre));navView.SelectedItem = item;}

  3. Добавьте SelectionChanged = "nav_SelectionChanged" в XAML и затем установите флажок SelectionChanged

  4. Опубликовать простое приложение, которое может воспроизвести вашу проблему
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...