-
- 依赖属性类型为@H_403_5@ System.Windows.DependencyProperty@H_403_5@。@H_403_5@
- 按规则,所有的依赖属性成员都必须是@H_403_5@ public@H_403_5@、@H_403_5@static@H_403_5@,并且有一个@H_403_5@ Property @H_403_5@作为后缀。@H_403_5@
- 依赖属性通常通过调用@H_403_5@ DependencyProperty.Register @H_403_5@静态方法创建。这个方法需要三个参数:@H_403_5@
- 依赖属性定义完成后,最好添加@H_403_5@ .NET @H_403_5@属性包装器@H_403_5@(@H_403_5@数据接口@H_403_5@)@H_403_5@实现对依赖属性的访问,这样可以允许通过@H_403_5@ XAML @H_403_5@设置依赖属性。@H_403_5@
- 在依赖属性的属性包装器中,除了@H_403_5@ GetValue / SetValue @H_403_5@调用外,不应该添加任何其它逻辑。如果想添加,应该在注册的回调函数中添加。所有的@H_403_5@ WPF @H_403_5@的内建属性包装器都遵守这个规则。@H_403_5@
- 由于依赖属性是一个静态成员,因此与@H_403_5@ .NET @H_403_5@属性相比,依赖属性节省了保存每个实例所需要的内存。@H_403_5@
- 依赖属性把相当一部分代码集中起来,并作标准化处理,这部分代码原本是要由属性实现者自己来写的。@H_403_5@
3.2.1 @H_403_5@依赖属性的实现@H_403_5@
通过不同的@H_403_5@ Register @H_403_5@方法重载,可以传入@H_403_5@ Metadata (@H_403_5@元数据@H_403_5@) @H_403_5@说明:@H_403_5@
例如:
@H_403_5@public class Button : ButtonBase@H_403_5@
@H_403_5@// @H_403_5@依赖属性@H_403_5@
@H_403_5@public static readonly DependencyProperty IsDefaultProperty;@H_403_5@
@H_403_5@static Button()@H_403_5@
@H_403_5@// @H_403_5@注册属性@H_403_5@
@H_403_5@Button.IsDefaultProperty =@H_403_5@
DependencyProperty.Register(@H_403_5@
"IsDefault",@H_403_5@
typeof(bool),@H_403_5@
typeof(Button),@H_403_5@
new FrameworkPropertyMetadata(@H_403_5@
false,@H_403_5@
new PropertyChangedCallback(Button.OnIsDefaultChanged)));@H_403_5@
@H_403_5@// .NET@H_403_5@属性包装器(可选)@H_403_5@
@H_403_5@public bool IsDefault@H_403_5@
@H_403_5@return (bool)this.GetValue(Button.IsDefaultProperty);@H_403_5@
@H_403_5@this.SetValue(Button.IsDefaultProperty,value);@H_403_5@
@H_403_5@// @H_403_5@属性改变的回调(可选)@H_403_5@
@H_403_5@private static void OnIsDefaultChanged(@H_403_5@
DependencyObject o,@H_403_5@
DependencyPropertyChangedEventArgs e)@H_403_5@
}@H_403_5@