【发布时间】:2018-08-14 14:00:03
【问题描述】:
我们设置 NavigationView 的 SelectionChanged 事件来运行一些条件检查。
private void ApplicationNavigationView_SelectionChanged(NavigationView sender, NavigationViewSelectionChangedEventArgs args)
{
}
我们只允许用户在满足条件时从页面 A 导航到页面 B。
问题是即使我们可以停止从Page A到Page B的导航,NavigationView 的选择指示符总是从NavigationViewItem A (Page A) 到NavigationViewItem B(页面 B)在用户点击/点击时。这是一种误导,因为选择指示器显示 NavigationViewItem B 已被选中,而页面仍然是页面 A。
有什么方法可以取消 SelectionChanged 事件并停止选择指示器的更改?
尝试以下代码没有成功
private NavigationViewItem previousNavigationViewItemSelected = null;
private async void ApplicationNavigationView_SelectionChanged(NavigationView sender, NavigationViewSelectionChangedEventArgs args)
{
var selectedItem = (args.SelectedItem) as NavigationViewItem;
if (selectedItem.Tag != null)
{
string pageName = "NavigationViewTest." + ((string)selectedItem.Tag);
Type pageType = Type.GetType(pageName);
contentFrame.Navigate(pageType);
previousNavigationViewItemSelected = selectedItem;
}
else
{
sender.SelectedItem = previousNavigationViewItemSelected;
}
}
NavigationViewItem.Tag 包含目标页面。当它不为空时,我们导航到目标页面,并缓存当前的 NavigationViewItem。当它为空时,我们将之前缓存的 NavigationViewItem 设置为 NavigationView.SelectedItem。我们预计这会将 SelectionIndicator 恢复到缓存的 NavigationViewItem,但事实并非如此。 SelectionIndicator 仍然更改为单击的 NavigationViewItem。这里有什么问题吗?
【问题讨论】:
标签: uwp navigationview selectionchanged