MVVM 模式很大程度上取决于 EF 实现的 INotifyPropertyChanged 接口,因此这里的一些工作已经为您完成。
我不太确定您的特定要求,但从为您的窗口创建视图模式开始。假设您有一个名为 Person 的实体,其属性为 FirstName 作为字符串,Id 为 Int32(当然),并且数据层的所有工作都已处理。我将向您展示如何列出人员实体并允许编辑人员实体。
视图模型
public class Window1ViewModel : INotifyPropertyChanged {
public event PropertyChangedEventHandler PropertyChanged;
private ObservableCollection<Person> _people;
private Person _selectedPerson;
public ObservableCollection<Person> People {
get { return _people; }
set { _people = value;
this.RaisePropertyChanged("People");
}
}
public Person SelectedPerson {
get { return _selectedPerson; }
set { _selectedPerson = value;
this.RaisePropertyChanged("SelectedPerson");
}
public Window1ViewModel() {
// Instead of setting to empty collection populate with data from EF.
this.People = new ObservableCollection<Person>();
}
private void RaisePropertyChanged(string propertyName) {
if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
现在您已经处理好 ViewModel,是时候创建 UI 并绑定它了。
绑定列表框
<ListBox ItemsSource="{Binding Source={StaticResource viewModel}, Path=People}" SelectedItem="{Binding Source={StaticResource viewModel}, Path=SelectedPerson, Mode=TwoWay}"/>
绑定文本框
<TextBox Text="{Binding Source={StaticResource viewModel}, Path=SelectedPerson.FirstName, Mode=TwoWay}"/>
最后,您可以在 Window 上创建一个按钮,将其绑定到 ViewModel 上的 ICommand 以调用 EF 层中的 Save() 方法。
您可以写很多东西来满足您的要求,我希望这对您有所帮助。还推荐以下信息。http://www.codeproject.com/Articles/81484/A-Practical-Quick-start-Tutorial-on-MVVM-in-WPF