加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

对WPF依赖项属性的理解

发布时间:2020-12-13 22:48:12 所属栏目:百科 来源:网络整理
导读:属性和事件是.NET抽象模型的核心部分,而WPF中则用更高级的依赖项属性(Dependency Property)代替了原来.NET中的属性.依赖项属性主要应用于自定义元素中,用于为自定义元素注入自定义的属性. 以下是定义和注册依赖项属性的方法: //声明并注册依赖项属性FoodProp

属性和事件是.NET抽象模型的核心部分,而WPF中则用更高级的依赖项属性(Dependency Property)代替了原来.NET中的属性.依赖项属性主要应用于自定义元素中,用于为自定义元素注入自定义的属性.

以下是定义和注册依赖项属性的方法:

//声明并注册依赖项属性FoodProperty
publicstaticDependencyPropertyFoodProperty=
DependencyProperty.Register("Food",typeof(Food),typeof(FoodManager),newFrameworkPropertyMetadata(newPropertyChangedCallback(OnFoodChanged)));

调用DependencyProperty.Register()静态方法为依赖项属性注册,在这个方法中,有5个参数:属性名(上面的"Food"),属性使用的数据类型,拥有该属性的类,一个具有附加属性设置的FrameworkPropertyMetadata对象(上面的FrameworkPropertyMetadata对象中传入了一个属性改变时的回调函数),一个用于验证属性的回调函数. 其中,后面2个是可选的.

然后添加属性包装器:

PublicFoodFood
{
get{return(Food)GetValue(FoodProperty);}
set{SetValue(FoodProperty,value);}
}

如果是自定义元素,添加属性包装器后,在使用控件时就能使用该属性. 当然,如果要在属性变化时触发代码,就要实现注册依赖项属性时的回调函数(本例中的OnFoodChanged()).

上面只是依赖项属性的部分内容,依赖项属性还可以插入其它WPF服务,以及支持验证回调和强制回调.

PS: 当你为自定义元素注入一个枚举类型的依赖项属性时,会出现一个很方便有趣的现象: VS2010的编辑器会把枚举类型中的内容列举出来,以供你选择. 就好像你给Border设置Background一样.

建议学习WPF的人去看《WPF编程宝典》,内容实在太全面了,而且每一章节都有对应的源码.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读