2010-10-03 26 views
0

我有一个视图有2个组合框(称它们为ParentTypeCombo和ChildTypeCombo)。这两个组合框都有相同的后备下拉列表(称为WorkItemTypes)。使用MVVM如何查看ComboBox是否更改了所选值?

使用MVVM如何知道这些组合框的值何时更改?我已经将它们绑定到属性(称为它们的父类型和子类型)。但是我记得,我的二传手不会被WPF调用。

我不想仅仅在组合框上关闭事件,因为这将在代码后面,而不是视图模型。

(我使用一个ObservableCollection看到一个example。不过我承认,我不明白。我使用了一种叫做CollectionViewSource,它并没有解释什么是或在那里得到的数值。)

回答

1

的的SelectedItem只是绑定到两个家长和孩子在视图模型属性

<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

当WPF改变它的值会调用我的setter?我不这么认为。 (但我不是100%的绑定) – Vaccano 2010-10-03 23:56:23

+0

是的,默认绑定是双向的,所以它会调用setter。尝试一个简单的应用程序,你会看到 – aqwert 2010-10-04 01:15:35

0

设置ComboBox IsSyncronyzedWithCurrentItem属性为true,而不是在你的vm上,调用这个CollectionViewSource.GetDefualtView([你的工作项类型]),返回类型是ICollectionView或类似的东西,它有一个当前改变的事件。

+0

是否可以使用支持两个组合框的一个集合(WorkitemTypes)? – Vaccano 2010-10-03 21:34:24

+0

不知道肯定检查它... – 2010-10-05 10:36:11

相关问题