我发现了一些奇怪的行为.如果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>
Run Code Online (Sandbox Code Playgroud)
CS:
private void Button_Click(object sender, RoutedEventArgs e)
{
nv.SelectedItem = null;
}
Run Code Online (Sandbox Code Playgroud)
这就是全部.我不明白为什么代码不适用于设置项以及如何处理此问题.
扩展@Martin-Zikmund 的答案。如果设置了 ItemsSource,则代码处理现在的情况。
public static class NavigationViewExtension
{
public static void ClearSelection(this NavigationView navigationView)
{
var temporaryItem = new NavigationViewItem();
if (navigationView.MenuItemsSource != null)
{
var existingList = ((IList)(navigationView.MenuItemsSource));
existingList.Add(temporaryItem);
navigationView.SelectedItem = temporaryItem;
navigationView.SelectedItem = null;
existingList.Remove(temporaryItem);
}
else
{
navigationView.MenuItems.Add(temporaryItem);
navigationView.SelectedItem = temporaryItem;
navigationView.SelectedItem = null;
navigationView.MenuItems.Remove(temporaryItem);
}
}
}
Run Code Online (Sandbox Code Playgroud)
这完全适合我