WPF MVVM模式开发实现简明教程 2 初识 INotifyPropertyChanged
WPF MVVM模式开发实现简明教程 3-1 BaseCommand
WPF MVVM模式开发实现简明教程 4 ViewModelBase
WPF MVVM模式开发简明实现教程 5 使用MultiValueConverter进行多参数事件绑定
WPF MVVM模式开发简明实现教程 7 DevExpress MVVM
MVVM的核心是一切皆可Binding(绑定),属性、样式、资源、事件等等都可以绑定,绑定后就是通过INotifyPropertyChanged通知View更新。
首先为前面的View ButtonViewUserControl增加DataContext,
增加命名空间
xmlns:viewmodel="clr-namespace:WpfApp6.ViewModel"
添加DataContext为对应的ViewModel
<UserControl.DataContext>
<viewmodel:ButtonViewModel />
</UserControl.DataContext>
如果是MainWindow的DataContext,需要改为<Window.DataContext>
为ViewModel添加INotifyPropertyChanged
using System.ComponentModel; public class ButtonViewModel : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; public void OnPropertyChanged(string propertyName) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } }
ButtonViewModel需要实现INotifyPropertyChanged接口,并实现OnPropertyChanged事件
修改View的Binding
<Button Content="{Binding ButtonContent}">
</Button>
在ViewModel里定义绑定的ButtonContent
private string buttonContent; public string ButtonContent { get { return buttonContent; } set { buttonContent = value; OnPropertyChanged("ButtonContent"); } }
在 ButtonViewUserControl.xaml.cs 初始化时设置ButtonContent的值
public ButtonViewUserControl() { InitializeComponent(); var model = this.DataContext as ButtonViewModel; model.ButtonContent = "Binding"; }
首先根据this.DataContext获取对应的ButtonViewModel,然后ButtonViewModel里的各个public的值都可以改了,同时View会更新