Отменить выбор всех элементов, если 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 ответ:
Если вы переключите привязку
SelectedItemнаSelectedValue, это будет вести себя так, как вы хотите,SelectedItemне очищается, потому что он не установлен вnull, потому что другой список установил значение,SelectedValueдействует немного иначе, поскольку он должен найти элемент или он очиститSelectedItemв списке.<ListView SelectedValue="{Binding Name}" ItemsSource="{Binding lstNames1}" /> <ListView SelectedValue="{Binding Name}" ItemsSource="{Binding lstNames2}" Grid.Column="1"/>Надеюсь, что это имеет смысл :)

