WPF简单的User Control
<div id="cnblogs_post_body">很早以前就接触了WPF,可是一直没怎么仔细研究过。最近做Windows Phone时又开始接触相关内容。在一个功能中,需要显示一些保存的城市列表,决定用自定义控件做。因为以前没仔细学习WPF,现在就趁着用到看了点。http://pic002.cnblogs.com/images/2012/449216/2012091821212284.jpg
=================以下段落转自网络并做出了修改====================
我们为控件(或者任何一个WPF 类)添加的依赖属性都是"公开的","静态的","只读的",其命名方式是"属性名+Property",这是依赖属性一成不变的
书写方式.对于依赖属性的注册可以在声明该属性时就调用DependencyProperty.Register()方法注册,也可以在其静态构造方法中注册.上面的
DependencyProperty.Register 方法的几个参数分别是:属性名(该属性名与声明的依赖属性名称"XXXProperty"相比仅仅是少了"Property"
后缀,其它完全一样,否则在运行时会报异常),属性的数据类型,属性的拥有者的类型,元数据.
关于参数中传递的元数据: 如果是普通的类则应该传递PropertyMetadata, 如果是FrameworkElement 则可以传递
FrameworkPropertyMetadata, 其中FrameworkPropertyMetadata 中可以制定一些标记表明该属性发生变化时控件应该做出什么反应,比如某
属性的变化会影响到该控件的绘制, 那么就应该像这样书写该属性的元数据: new FrameworkPropertyMetadata(defauleValue,
FrameworkPropertyMetadataOptions.AffectsRender);这样当该属性发生变化时系统会考虑重绘该控件.另外元数据中还保护很多内容,比
如默认值,数据验证,数据变化时的回调函数,是否参与属性"继承"等.
然后,我们将该依赖属性包装成普通属性:
<div class="cnblogs_code"> 1 "获取或设置当前城市")] 2 "Common Properties")] 3 public string City 4 { 5 get 6 { 7 return (string)this.GetValue(CityProperty); 8 } set 9 {10 this.SetValue(CityProperty, value);11 }12 }
页:
[1]