视频图像处理系列索引 || Arcgis/Engine/Server开发索引 || Web Map Gis开发索引 || jquery表格组件 JQGrid索引
WPF MVVM模式开发实现简明教程索引 || ArcGIS Runtime WPF(.net C#)开发简明教程索引

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

posted @ 2020-12-17 12:01  jhlong  阅读(786)  评论(0编辑  收藏  举报
海龙的博客 jhlong@cnblogs 版权所有© 转载请注明链接.有用请推荐一下
代码全部经过本人测试,但不保证复制粘贴就正常运行,更不保证能解决你的问题,请结合前后代码及描述理解后修改和使用