1. 程式人生 > 實用技巧 >WPF MVVM模式開發實現簡明教程 2 初識 INotifyPropertyChanged

WPF MVVM模式開發實現簡明教程 2 初識 INotifyPropertyChanged

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會更新