我发现了一些奇怪的行为。如果SelectedItem是SettingsItem,则无法从代码中取消选择
XAML:
<NavigationView Name="nv">
<NavigationView.MenuItems>
<NavigationViewItem Content="dsadas" />
<NavigationViewItem Content="dsadas" />
<NavigationViewItem Content="dsadas" />
<NavigationViewItem Content="dsadas" />
</NavigationView.MenuItems>
<Button Click="Button_Click" Content="de select" />
</NavigationView>
CS:
private void Button_Click(object sender, RoutedEventArgs e)
{
nv.SelectedItem = null;
}
就是这样。我不明白为什么代码不能用于设置项目以及如何处理这个问题。
答案 0 :(得分:2)
延长@ Martin-Zikmund的答案。如果设置了ItemsSource,则现在处理代码。
which -a python
这完全适合我
答案 1 :(得分:0)
这是NavigationView
中非常有趣的错误,我创建了一个GitHub repro并通过Feedback Hub进行了报告。
作为一种解决方法,我创建了以下内容&#34; hack&#34;扩展方法:
public static class NavigationViewExtensions
{
public static void ClearSelection(this NavigationView navigationView)
{
var temporaryItem = new NavigationViewItem();
navigationView.MenuItems.Add(temporaryItem);
navigationView.SelectedItem = temporaryItem;
navigationView.SelectedItem = null;
navigationView.MenuItems.Remove(temporaryItem);
}
}
它是如何工作的?代码会临时向控件添加一个新NavigationViewItem
并选择它(从而取消选择“设置”项)。然后它清除选择并立即删除临时项目。由于视图在UI线程上更新,因此您将永远无法注意到新项目的添加和删除。
答案 2 :(得分:0)
我找到了另一种解决方法。
您需要将隐藏的项目添加到NavigationView:
<NavigationView Name="nv">
<NavigationView.MenuItems>
<NavigationViewItem Content="dsadas" />
<NavigationViewItem Content="dsadas" />
<NavigationViewItem Content="dsadas" />
<NavigationViewItem Content="dsadas" />
<NavigationViewItem x:Name="HiddenItem" Visibility="Collapsed" />
</NavigationView.MenuItems>
<Button Click="Button_Click" Content="de select" />
然后您可以清除选择:
nv.SelectedItem = HiddenItem;