NavigationView - 当选择设置项时,无法从代码中取消选择它

Art*_*iak 5 c# uwp

我发现了一些奇怪的行为.如果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)

这就是全部.我不明白为什么代码不适用于设置项以及如何处理此问题.

Art*_*iak 2

扩展@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)

这完全适合我