选择在wpf mvvm中更改了组合框的事件

时间:2014-01-15 06:51:42

标签: wpf mvvm

我是wpf和MVVM的新手,我花了一整天时间尝试将一个ComboBox的值传递给SelectionChanged上的ViewModel。我想在选择更改过程中调用一个函数。在mvvm中,它的解决方案是什么?

1 个答案:

答案 0 :(得分:8)

在MVVM中,我们通常处理事件,因为在视图模型中使用UI代码并不是很好。我们经常使用属性绑定到SelectionChanged来代替使用ComboBox.SelectedItem之类的事件:

查看型号:

public ObservableCollection<SomeType> Items { get; set; } // Implement 
public SomeType Item { get; set; } // INotifyPropertyChanged here

查看:

<ComboBox ItemsSource="{Binding Items}" SelectedItem="{Binding Item}" />

现在,只要ComboBox中的所选项目发生变化,Item属性也会发生变化。当然,您必须确保已将视图的DataContext设置为视图模型的实例以使其工作。如果要在更改所选项目时执行某些操作,可以在属性设置器中执行此操作:

public SomeType Item 
{
    get { return item; }
    set
    {
        if (item != value)
        {
            item = value;
            NotifyPropertyChanged("Item");
            // New item has been selected. Do something here
        }
    }
}