WPF MVVM模式开发实现简明教程 2 初识 INotifyPropertyChanged

WPF MVVM模式开发实现简明教程 1 开篇简介 

WPF MVVM模式开发实现简明教程 2 初识 INotifyPropertyChanged

WPF MVVM模式开发简明实现教程 3 事件绑定   

WPF MVVM模式开发实现简明教程 3-1 BaseCommand  

WPF MVVM模式开发实现简明教程 4 ViewModelBase  

WPF MVVM模式开发简明实现教程 5 使用MultiValueConverter进行多参数事件绑定 

WPF MVVM模式开发简明实现教程 6 其他绑定  

WPF MVVM模式开发简明实现教程 7 DevExpress MVVM  

WPF MVVM模式开发简明实现教程 8 完结 附全部代码  

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

原文地址:https://www.cnblogs.com/jhlong/p/14148886.html