Отменить выбор всех элементов, если SelectedItem привязан к чему-то, чего нет в списке


У меня есть два списка с разными ItemsSource , но с SelectedItem привязанными к одному и тому же свойству - "имя".

Сначала я выбираю пункт " c "в правом списке, поэтому пункт" c " в левом списке также выбирается.

Чем я выбрал другой пункт в правом списке, но "c" в левом списке все еще выбран. Я понимаю, почему он это делает, но могу ли я заставить его снять отметку "С" в правильном списке ?

Введите описание изображения здесь

XAML:

 <Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition  />
        <ColumnDefinition  />
    </Grid.ColumnDefinitions>

    <ListView SelectedItem="{Binding Name}" ItemsSource="{Binding lstNames1}"/>
    <ListView SelectedItem="{Binding Name}" ItemsSource="{Binding lstNames2}" Grid.Column="1"/>
</Grid>

Код сзади:

 public partial class selected : Window
{
    public ObservableCollection<string> lstNames1 { get; set; }
    public ObservableCollection<string> lstNames2 { get; set; }

    public string Name { get; set; }


    public selected()
    {
        Names1 = new ObservableCollection<string> {"a1", "b1", "c"};
        Names2 = new ObservableCollection<string> { "a2", "b2", "c" };
        InitializeComponent();
        DataContext = this;
    }
}
1 6

1 ответ:

Если вы переключите привязку SelectedItem на SelectedValue, это будет вести себя так, как вы хотите, SelectedItem не очищается, потому что он не установлен в null, потому что другой список установил значение, SelectedValue действует немного иначе, поскольку он должен найти элемент или он очистит SelectedItem в списке.

<ListView SelectedValue="{Binding Name}" ItemsSource="{Binding lstNames1}" />
<ListView SelectedValue="{Binding Name}" ItemsSource="{Binding lstNames2}" Grid.Column="1"/>

Надеюсь, что это имеет смысл :)

Введите описание изображения здесьВведите описание изображения здесь