Я ищу способ запретить двум (или более) ComboBoxes
иметь одинаковые SelectedItem
. У меня есть несколько ComboBoxes
, которые имеют одинаковые ItemsSource
, каждый из которых связан с отдельным свойством в модели представления.
<ComboBox Width="50" ItemsSource="{Binding Keys}" SelectedItem="{Binding LoadedBackgroundKey, NotifyOnValidationError=True, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
<ComboBox Width="50" ItemsSource="{Binding Keys}" SelectedItem="{Binding LoadedForegroundKey, NotifyOnValidationError=True, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
<ComboBox Width="50" ItemsSource="{Binding Keys}" SelectedItem="{Binding IncreaseSizeKey, NotifyOnValidationError=True, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
и т.д.. В ViewModel:
public Key LoadedBackgroundKey { get; set; }
public Key LoadedForegroundKey { get; set; }
public Key IncreaseSizeKey { get; set; }
private ObservableCollection<Key> _availableKeys;
public IEnumerable<Key> Keys => _availableKeys;
Когда загружается модель вида, _availableKeys
заполняется соответствующими клавишами (A
, B
и т. Д.). Я хочу иметь возможность предотвратить выбор одного и того же ключа в нескольких комбинированных списках или (как минимум) выдавать ошибку, когда один и тот же ключ выбран в нескольких полях.
Этот вопрос может быть похож на то, что я ищу, но я не уверен, что он вполне работает (возможно, я просто не понимаю его правильно). Это также относится только к случаю двух ComboBoxes
. Хотя я отображаю только 3, я хочу, чтобы это масштабировалось на несколько Comboboxes
. ValidationRule
лучший подход? Если так, как бы я это реализовал, проверив все ComboBoxes
? Или есть более простой подход?