模拟实现WPF的依赖属性及绑定通知机制(4)--模拟实现绑定连动机制

前端之家收集整理的这篇文章主要介绍了模拟实现WPF的依赖属性及绑定通知机制(4)--模拟实现绑定连动机制前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

1、一个依赖对象示例:

public class MyDendencyControl : MyDependencyObject@H_502_3@ {@H_502_3@ public static readonly MyDependencyProperty ContentDependencyProperty =@H_502_3@ MyDependencyProperty.Register("Content",typeof(string),typeof(MyDendencyControl),new MyPropertyMetadata("hello"));

//封装成普通属性的依赖属性,注意调用的是基类的相关方法。@H_502_3@ public string Content@H_502_3@ {@H_502_3@ get@H_502_3@ {@H_502_3@ return base.GetValue(ContentDependencyProperty).ToString();@H_502_3@ }@H_502_3@ set@H_502_3@ {@H_502_3@ base.SetValue(ContentDependencyProperty,value);@H_502_3@ }@H_502_3@ }@H_502_3@ }

2)一个实现了INotifyPropertyChanged接口的数据提供类@H_502_3@ public class MyNotifyPropertyClass : INotifyPropertyChanged@H_502_3@ {@H_502_3@ public event PropertyChangedEventHandler PropertyChanged;@H_502_3@ private void RaisePropertyChanged(string PropertyName)@H_502_3@ {@H_502_3@ if (PropertyChanged != null)@H_502_3@ {@H_502_3@ PropertyChanged(this,new PropertyChangedEventArgs(PropertyName));@H_502_3@ }@H_502_3@ }@H_502_3@ private string _Name;@H_502_3@ public string Name@H_502_3@ {@H_502_3@ get@H_502_3@ {@H_502_3@ return _Name;@H_502_3@ }@H_502_3@ set@H_502_3@ {@H_502_3@ if (_Name != value)//这是比较好的习惯,可以提供性能.@H_502_3@ {@H_502_3@ _Name = value;@H_502_3@ RaisePropertyChanged("Name");@H_502_3@ }@H_502_3@ }@H_502_3@ }@H_502_3@ }

3、测试连动(应用)

//创建一个依赖对象实例@H_502_3@ MyDendencyControl theCtrl = new MyDendencyControl();@H_502_3@ //创建一个绑定目标类@H_502_3@ MyNotifyPropertyClass theClass = new MyNotifyPropertyClass();@H_502_3@ //构建绑定,这种是手工绑定方法,在xaml中设置,最终也会解释成如下代码:@H_502_3@ MyBinding theBinding = new MyBinding();@H_502_3@ theBinding.TargetObject = theClass;@H_502_3@ theBinding.PropertyName = "Name";@H_502_3@ theCtrl.SetBinding(MyDendencyControl.ContentDependencyProperty,theBinding);@H_502_3@ //默认值@H_502_3@ MessageBox.Show(theCtrl.Content);@H_502_3@ theClass.Name = "hello,you are good!";@H_502_3@ //关联属性变化后再看当前值@H_502_3@ MessageBox.Show(theCtrl.Content);@H_502_3@ //依赖属性变化,会通知关联类属性也变化.@H_502_3@ theCtrl.Content = "are you ready?";@H_502_3@ MessageBox.Show(theClass.Name);

到此,微软的WPF依赖属性,绑定和通知属性及相互连动机制就完成了,当然,只是简单的模拟。微软的实现还是要复杂很多,但原理基本如此。

@H_502_3@原文链接http://www.jb51.cc/article/p-etgyvuhf-bcq.html

猜你在找的设计模式相关文章