WPF:依赖属性和附加属性示例
来源:互联网 发布:芜湖淘宝主播招聘 编辑:程序博客网 时间:2024/05/21 17:18
- public class Button : ButtonBase
- {
- // 依赖属性
- public static readonly DependencyProperty IsDefaultProperty;
- static Button()
- {
- // 注册属性
- Button.IsDefaultProperty = DependencyProperty.Register("IsDefault",
- typeof(bool), typeof(Button),
- new FrameworkPropertyMetadata(false,
- new PropertyChangedCallback(OnIsDefaultChanged)));
- ……
- }
- // .net属性包装器(可选)
- public bool IsDefalut
- {
- get { return (bool)GetValue(Button.IsDefaultProperty); }
- set { SetValue(Button.IsDefaultProperty, value); }
- }
- // 属性改变的回调(可选)
- private static void OnIsDefaultChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e)
- {
- ……
- }
- }
IsDefaultProperty静态成员是真正的依赖属性,类型为System.Windows.DependencyProperty。按规则,所有的DependencyProperty成员都必须是public、static,并且有一个Property作为后缀。依赖属性通常是通过调用DependencyProperty.Register静态方法创建的,这样的方法需要一个名称(IsDefault)、一个属性类型(bool)以及拥有这个属性的类(Button类)。。通过不同的Register方法重载,你可以传入metadata(元数据)来告诉WPF如何处理该属性、如何处理属性值改变的回调、如何处理强制值转,以及如何验证值。Button会在它的静态构造函数中调用Register的重载,给依赖属性一个默认值false,并为变更通知添加一个委托。
最后,那个叫作IsDefault的传统.NET属性会调用继承自System.Windows.Dependency-Object的GetValue和SetValue方法来实现自己的访问器,System.Windows.DependencyObject是底层基类,这是拥有依赖属性的类必须继承的。GetValue返回最后一次由SetValue设置的值,如果SetValue从未被调用过,那么就是该属性注册时的默认值。IsDefault .NET属性(有时叫作此上下文中的属性包装器)并不是必需的,Button的使用者可能会直接调用GetValue/ SetValue方法,因为它们是公开的。但是.NET属性会让以编程方式读写属性变得更加自然,它还允许通过XAML设置属性。
附加属性:
附加属性能够启用一些我们所盼望的属性值(被添加的元素并没有该属性值)继承特性,是依赖属性的一种特殊形式,可以被有效地添加到任何对象中。
- <StackPanel TextElement.FontSize="30" TextElement.FontStyle="Italic"
- Orientation="Horizontal" HorizontalAlignment="Center">
- <Button MinWidth="75" Margin="10">Help</Button>
- <Button MinWidth="75" Margin="10">OK</Button>
- </StackPanel>
- WPF:依赖属性和附加属性示例
- WPF:依赖属性和附加属性示例
- WPF 依赖属性和附加属性区别
- 依赖属性和附加属性
- WPF之CLR属性、依赖属性、附加属性
- 依赖属性和附加属性的自定义
- WPF菜鸟谈之依赖属性,附加属性(附加《深入浅出WPF》pdf下载)
- WPF(附加属性)
- WPF(附加属性 Slider)
- WPF 自定义附加属性
- WPF 附加属性
- (WPF)附加属性
- WPF 附加属性
- WPF属性(二)附加属性
- XAML实例教程系列 - 依赖属性和附加属性
- XAML实例教程系列 - 依赖属性和附加属性
- WPF中的属性(一)- CLR属性和依赖属性
- WPF中的属性- CLR属性和依赖属性
- MAPGIS K9 基础平台培训讲义 —— 数据编辑
- MAPGIS K9基础平台培训讲义——数据管理
- 2012年CS开发暑期培训代码
- Oracle Hint用法总结
- MapGIS更改某图层里的简单要素类
- WPF:依赖属性和附加属性示例
- C#调用exe程序
- 【学习笔记】DRY编程规则
- Centos 5 光盘做yum源
- 【资料分享】地图基础知识
- 驱动对象、设备对象、设备栈----驱动程序基础概念
- 【资料分享】常用地图投影介绍
- 【资料分享】地图投影与地图坐标系
- c#webservice的简单示例