我在UWP应用程序中使用Navigationview控件,问题是当我单击后退按钮时,焦点元素不会更改为显示在内容框中的项目。例如,单击的元素是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;
}
}
}
答案 0 :(得分:3)
已解决,使用 NavigationViewExtensions.SetSelectedIndex(NavigationView,index);从Microsoft.Toolkit.Uwp.UI.Extensions 4.0.0开始,因为不建议使用5.0.0版本
答案 1 :(得分:0)
我在您的代码中没有发现任何问题。几种方法可能有助于解决问题:
调试并确保MenuItem项不为空。
单击后退按钮时,请尝试直接通过您的代码选择房屋或摄像机
私有无效OnBackRequested(对象发送者,BackRequestedEventArgs e) { 字符串nombre =“ Camera”; MenuItem item = subItemsMenu.FirstOrDefault(nom => nom.NombrePantalla.Equals(nombre)); navView.SelectedItem =项目; }
将SelectionChanged =“ nav_SelectionChanged”添加到XAML,然后选中SelectionChanged