Используя MVVM, как я могу узнать, изменил ли ComboBox выбранное значение? - PullRequest
0 голосов
/ 04 октября 2010

У меня есть представление, которое имеет 2 поля со списком (назовите их ParentTypeCombo и ChildTypeCombo). Оба этих поля со списком имеют одинаковый выпадающий список поддержки (назовите его WorkItemTypes).

Используя MVVM, как я могу узнать, когда значение было изменено для этих полей со списком? Я связал их со свойствами (назовите их ParentType и ChildType). Но, насколько я помню, мой сеттер не будет вызываться WPF.

Я не хочу просто отключать событие в поле со списком, потому что это будет идти в коде, а не в модели представления.

(Я видел пример с использованием ObservableCollection. Но, признаюсь, я этого не понял. Я использовал значение с именем CollectionViewSource , которое не объясняет, что это или где это получен.)

Ответы [ 2 ]

1 голос
/ 04 октября 2010

Просто привяжите SelectedItem к свойству в ViewModel для родителя и потомка

<ComboBox SelectedItem="{Binding ParentSelectedItem}" ... />

// VM

public WorkItemType ParentSelectedItem
{
    get { return _parentSelectedItem; }
    set
    {
        if(value != _parentSelectedItem)
        {
            //HERE you know it has changed value.
            _parentSelectedItem = value;
            RaisePropertyChanged("ParentSelectedItem");
        }
    }
  }

Также вы можете иметь только одну коллекцию в модели представленияи свяжите их с обоими списками.

0 голосов
/ 04 октября 2010

Установите для свойства ComboBox IsSyncronyzedWithCurrentItem значение true, чем в вашей виртуальной машине, вызовите это CollectionViewSource.GetDefualtView ([типы ваших рабочих элементов]), тип возвращаемого значения - ICollectionView или что-то подобное, и у него есть текущее измененное событие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...