Отменить выбор всех элементов, если 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"/>
Надеюсь, что это имеет смысл :)