附件属性
<Ellipse style=”{StaticResource ellipseStyle}” Canvas.Left=”134”, Canvas.Top=”234”/>
Canvas.Top 和Left 就为附加属性。
它们是Canvas定义的属性,但是在Canvas的子元素中设置值。
设置这些附件属性 要使用两个Canvas类定义的两个静态方法:
Canvas.SetLeft(ellipse,11);
Canvas.SetTop(ellipse,123);
或者使用由DependencyObject定义,被Ellipse类继承的setValue方法,引用Canvas定义的静态依赖属性。
Ellipse.SetValue(Canvas.LeftProperty,110);
在附加属性中 DependencyProperty对象是通过DependencyProperty.RegisterAttached创建,而不是DependencyProperty.Register创建。
Public static readonly DependencyProPerty LeftProperty= DependencyProperty.RegisterAttached(“Left”,typeof(double),typeof(CanvasClone),new proPertyMetadata(0.0,OnleftOrTopPropertyChanged));
PorypertyMetadata 的第一个参数为Double类型,避免C#编译器将其识别为int而引发运行时错误.
定义DependencyProperty字段之后,需要有静态方法用以访问附加属性。这些静态方法一Get和Set 开头
Public Static void SetLeft(DependencyObject obj,double value)
{
Obj.setValue(LeftPropert,value);
}
Public Static void GetLeft(DependencyObject obj,double value)
{
Return (double)Obj.setValue(LeftPropert);
}
这些方法可以在代码中显示的调用,也可以在Xaml解析器中被隐式的调用。