博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WPFS数据绑定(要是后台类对象的属性值发生改变,通知在“client界面与之绑定的控件值”也发生改变须要实现INotitypropertyChanged接口)...
阅读量:6907 次
发布时间:2019-06-27

本文共 2715 字,大约阅读时间需要 9 分钟。

WPFS数据绑定(要是后台类对象的属性值发生改变,通知在“client界面与之绑定的控件值”也发生改变须要实现INotitypropertyChanged接口)

MainWindow.xaml

MainWindow.xaml.cs

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Windows;using System.Windows.Controls;using System.Windows.Data;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Imaging;using System.Windows.Navigation;using System.Windows.Shapes;namespace WpfApplication1{    ///     /// MainWindow.xaml 的交互逻辑    ///     public partial class MainWindow : Window    {        Person p1 = new Person();        public MainWindow()        {            InitializeComponent();        }        private void Window_Loaded(object sender, RoutedEventArgs e)        {            p1.Name = "李大钊";            p1.Age = 28;            txtName.DataContext = p1;            txtAge.DataContext = p1;        }        private void button1_Click(object sender, RoutedEventArgs e)        {            p1.Age++;        }        private void button2_Click(object sender, RoutedEventArgs e)        {            MessageBox.Show((p1.Age).ToString());        }    }}

Model

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.ComponentModel;namespace WpfApplication1{    ///     /// INotifyPropertyChanged接口是向client发出某一属性值已经更改的通知    /// INotifyPropertyChanged是.net内置的接口,数据绑定DataContext是否实现了INotityPropertyChanged接口,假设实现了,就会监听PropertyChanged得知属性的变化    /// 假设要求后台对象的值发送改变,界面的值也跟着变,则须要实现INotityPropertyChanged接口。而且在对象属性值变化后触发事件    /// 假设说后台对象的值会不变,则没有必要实现这个接口    ///     public class Person:INotifyPropertyChanged    {        private string name;        public string Name        {            get            {                return name;            }            set            {               this.name = value;               if (PropertyChanged != null)               {   //假设Name属性发生了改变,则触发这个事件                   PropertyChanged(this, new PropertyChangedEventArgs("Name"));               }            }        }        private int age;        public int Age        {            get            {                return age;            }            set            {                this.age = value;                //假设有人(数据绑定的对象来监听的)监听这个事件(假设有人监听就是不等于null,假设没人监听这个事件就等于null)                if (PropertyChanged != null)                {                     //假设Age属性发生了改变,则触发这个事件                    PropertyChanged(this,new PropertyChangedEventArgs("Age"));                }            }        }        public event PropertyChangedEventHandler PropertyChanged;            }}


你可能感兴趣的文章
SQLServer 2016安装时的错误:Polybase要求安装Oracle JRE 7更新51或更高版本
查看>>
光流定位原理是什么??【转】
查看>>
POJ 2778 DNA Sequence (AC自己主动机 + dp)
查看>>
JS排序的运用
查看>>
堆排序
查看>>
uC/OS-II源码分析(一)
查看>>
Redis自学笔记 --string类型
查看>>
【c++】动态绑定
查看>>
WCF NetTcpBinding Transport安全模式(8) ClientCredentialType证书验证模式---- PeerOrChainTrust验证模式...
查看>>
A.4.1-类的继承(implement)
查看>>
Nginx中防盗链(下载防盗链和图片防盗链)及图片访问地址操作记录
查看>>
super返回不过来
查看>>
Git学习(一) 版本号管理工具
查看>>
cas服务器源码阅读笔记,对标博客
查看>>
细说ES7 JavaScript Decorators
查看>>
C# Win32控制台线程计时器代码示例
查看>>
JAVA面试题
查看>>
【小贴士】【stringify神BUG】【localstorage失效】【消灭Safari alert框】【是否延迟加载】【页面10px白屏】...
查看>>
Android 图片处理效果集
查看>>
【Andorid X 项目笔记】TextView字幕效果(3)
查看>>