WPF MVVM模式開發實現簡明教程 2 初識 INotifyPropertyChanged
阿新 • • 發佈:2020-12-17
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會更新