我有一个包含2个组合框的视图(称为ParentTypeCombo和ChildTypeCombo)。这两个组合框都具有相同的支持下拉列表(称为WorkItemTypes)。
使用MVVM如何知道这些组合框的值何时更改?我已将它们绑定到属性(称为ParentType和ChildType)。但是我记得,WPF不会调用我的二传手。
我不想在组合框上关闭事件,因为这将在后面的代码中,而不是视图模型。
(我看到一个使用ObservableCollection的example。但我承认我不理解它。我使用了一个名为 CollectionViewSource 的值,它没有解释它是什么或在哪里获得它。)
答案 0 :(得分:1)
将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");
}
}
}
此外,您只能在视图模型上拥有一个集合,并将它们绑定到两个组合框。
答案 1 :(得分:0)
将ComboBox IsSyncronyzedWithCurrentItem属性设置为true,而不是在你的vm上,调用此CollectionViewSource.GetDefualtView([你的工作项类型]),返回类型是ICollectionView或类似的东西,它有一个当前更改的事件。