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

Jin*_*esh 0 wpf mvvm

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

She*_*dan 8

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

查看型号:

public ObservableCollection<SomeType> Items { get; set; } // Implement 
public SomeType Item { get; set; } // INotifyPropertyChanged here
Run Code Online (Sandbox Code Playgroud)

视图:

<ComboBox ItemsSource="{Binding Items}" SelectedItem="{Binding Item}" />
Run Code Online (Sandbox Code Playgroud)

现在,只要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
        }
    }
}
Run Code Online (Sandbox Code Playgroud)