什么是依赖属性项属性?

Idea的File-&Project Structure-&左侧Modules:
选择自己的项目如图:
每个依赖项的Scope选项进行该jar包的相关操作设置,默认为compile,根据需要调整设置:
1、compile设置编译范围内有效,在编译和打包时都会将依赖项加载进去。
2、test设置测试范围内有效,只在测试时使用,编译和打包时都不会加载该项。
3、provided设置编译和测试的范围内有效,打包时不会加载该项。
4、runtime设置在运行时加载该依赖项,但是编译时不依赖。
阅读(...) 评论()百度知道 - 信息提示
知道宝贝找不到问题了&_&!!
该问题可能已经失效。
秒以后自动返回2010年3月 专题开发/技术/项目大版内专家分月排行榜第二2009年6月 专题开发/技术/项目大版内专家分月排行榜第二2009年5月 专题开发/技术/项目大版内专家分月排行榜第二2009年1月 专题开发/技术/项目大版内专家分月排行榜第二
2010年11月 专题开发/技术/项目大版内专家分月排行榜第三2010年5月 专题开发/技术/项目大版内专家分月排行榜第三2009年12月 专题开发/技术/项目大版内专家分月排行榜第三2009年11月 专题开发/技术/项目大版内专家分月排行榜第三2009年8月 专题开发/技术/项目大版内专家分月排行榜第三2009年4月 专题开发/技术/项目大版内专家分月排行榜第三2009年3月 专题开发/技术/项目大版内专家分月排行榜第三2008年12月 专题开发/技术/项目大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。1. 依赖项属性 简单理解 - lanlorr - 博客园
依赖项属性 简单理解
dependency property 的简单理解(略去大部头理解)
依赖项属性
依赖项属性的值不是简单的封装字段,而是根据其他的输入值来决定本属性的值。为什么要这样做?因为在WPF体系中,只有定义属性为依赖项属性,这个属性才支持样式设置,数据绑定,继承,动画和默认值。
两个关键行为:更改通知和动态值识别。
简言之,依赖属性就是一种可以自己没有值,并能通过Binding从数据源获得值(依赖在别人身上)的属性。拥有依赖属性的对象被称为“依赖对象”。
wpf使用依赖项属性的方式
当属性发生变化时,依赖项属性不会自动引发事件以通知属性值发生了变化。会触发受保护名为OnPropertyChangedCallback()的方法。该方法通过两个wpf服务(数据绑定和触发器)传递信息,并调用PropertyChangedCallback回调函数(如果已经定义了此函数)。
即:当属性发生变化时,如果希望进行响应,则有两种选择:1.使用属性值创建绑定 2.编写能够自动改变其他属性或开始动画的触发器。
(省略了大部头细节)
附加属性(Attached Properties)就是说,一个属性本来不属于某个对象,但由于某种需求而被后来附加上。例如:Button控件本身没有Grid.Row属性,但是将Button放在Grid布局里面,就可以用这个属性来设置Button的位置。类似的,放在Canvas里面,可以附加属性Canvas.Top;放在DockPanel里,可以使用DockPanel.Dock。
&Grid ShowGridLines="True"&
&Grid.ColumnDefinitions&
&ColumnDefinition/&
&ColumnDefinition/&
&ColumnDefinition/&
&/Grid.ColumnDefinitions&
&Grid.RowDefinitions&
&RowDefinition/&
&RowDefinition/&
&RowDefinition/&
&/Grid.RowDefinitions&
&Button Background="Black" Grid.Column="1" Grid.Row="1"/&
附加属性也可以使用Binding依赖在其他对象的数据上。例如:用两个slider控制矩形在Canvas中的横纵坐标。
&Slider x:Name="sliderX" Canvas.Top="10" Canvas.Left="10" Width="260" Minimum="50" Maximum="200"/&
&Slider x:Name="sliderY" Canvas.Top="40" Canvas.Left="10" Width="260" Minimum="50" Maximum="200"/&
&Rectangle x:Name="rect" Fill="Blue" Width="30" Height="30" Canvas.Left="{Binding ElementName=sliderX,Path=Value}" Canvas.Top="{Binding ElementName=sliderY,Path=Value}"/&
结果如图:class MyClass : DependencyObject
public static readonly DependencyProperty MyfieldProperty = DependencyProperty.Register("Myfield", typeof(int), typeof(MyClass), new PropertyMetadata(0), new ValidateValueCallback(new MyClass().MyValidateMethod));
public int Myfield
get { return (int)GetValue(MyfieldProperty); }
set { SetValue(MyfieldProperty, value); }
public bool MyValidateMethod(object value)
return true;//这里实现验证
&Register方法有三种重载
Register(String, Type, Type)&& 使用指定的属性名称、属性类型和属性所在对象的类型。
Register(String, Type, Type, PropertyMetadata) 使用指定的属性名称、属性类型、属性所在对象的类型和属性元数据注册依赖项属性。
Register(String, Type, Type, PropertyMetadata, ValidateValueCallback) 使用指定的属性名称、属性类型、属性所在对象的类型、属性元数据和属性的值验证回调来注册依赖项属性。
在Register中,各个参数解释如下:
String:依赖属性的名字(不加Property,即字段的名字);
Type:属性的类型;
Type:属性所属对象的类型;
PropertyMetadata:依赖项对象的属性元数据,是一个PropertyMetadata类型,可能赋初始值。PropertyMetadata有一个object的构造函数;
ValidateValueCallback:表示用作回调的方法,这个类型是一个委托,用于验证依赖项属性的值的有效性,因为是委托,故它的构造参数为一个方法名。
最后,来构造依赖属性,与普通的属性有所区别:
Public&属性类型&属性名
&&&&&&&&Get&{return (属性类型)this.GetValue(字段名); }
&&&&&& &Set&{this.SetValue(字段名, value);&}
其中的GetValue和SetValue都是调用父类DependencyObject的方法。
阅读(...) 评论()}

我要回帖

更多关于 真悲鸣项链属性 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信