博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
依赖项属性
阅读量:5262 次
发布时间:2019-06-14

本文共 2411 字,大约阅读时间需要 8 分钟。

   由 WPF 属性系统支持的属性称为依赖项属性,依赖项属性的用途在于提供一种方法来基于其他输入的值计算属性值。 这些其他输入可以包括系统属性(如主题和用户首选项)、实时属性确定机制(如数据绑定和动画/演示图板)、重用模板(如资源和样式)或者通过与元素树中其他元素的父子关系来公开的值。 另外,可以通过实现依赖项属性来提供独立验证、默认值、监视其他属性的更改的回调以及可以基于可能的运行时信息来强制指定属性值的系统。 派生类还可以通过重写依赖项属性元数据(而不是重写现有属性的实际实现或者创建新属性)来更改现有属性的某些具体特征。

自定义依赖项属性格式:

 以下为在自定义控件中标准格式:

1 ///  2         /// TimeProperty依赖项属性,依赖属性都是"公开的","静态的","只读的",其命名方式是"属性名+Property", 3         ///  4         public static readonly DependencyProperty TimeProperty = 5             DependencyProperty.Register("Time", typeof(DateTime), typeof(ClockUserCtrl), 6             new FrameworkPropertyMetadata(DateTime.Now, new PropertyChangedCallback(TimePropertyChangedCallback))); 7  8         ///  9         /// 依赖项属性值发生改变时回调10         /// 11         /// 12         /// 13         private static void TimePropertyChangedCallback(DependencyObject sender, DependencyPropertyChangedEventArgs arg)14         {15             if (sender != null && sender is ClockUserCtrl)16             {17                 ClockUserCtrl clock = sender as ClockUserCtrl;18                 clock.OnTimeUpdated((DateTime)arg.OldValue, (DateTime)arg.NewValue);19             }20         }21 22         /// 23         /// 将TimeProperty依赖项属性包装为Time普通属性24         /// 25         [Description("获取或设置当前日期和时间")]26         [Category("Common Properties")]27         public DateTime Time28         {29             get30             {31                 return (DateTime)this.GetValue(TimeProperty);32             }33             set34             {35                 this.SetValue(TimeProperty, value);36             }37         }

以下为普通格式:

1 public static readonly DependencyProperty SidesProperty; 2  3     // 将SidesProperty依赖项属性包装为Time普通属性 4         public int Sides 5         { 6             get { return (int)GetValue(SidesProperty); } 7             set { SetValue(SidesProperty,value); } 8         } 9 10     //静态构造方法中注册11         static GridSplit()12         {13             FrameworkPropertyMetadata md = new FrameworkPropertyMetadata();14             md.PropertyChangedCallback = OnSidesChanged;15             SidesProperty = DependencyProperty.Register("Sides1", typeof(int), typeof(GridSplit),md);16         }17     18     //依赖项属性值发生改变时回调19         static void OnSidesChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args)20         {21             22         }

 

转载于:https://www.cnblogs.com/zhangjianli/archive/2012/06/01/2529870.html

你可能感兴趣的文章
修复IE不能执行JS的方法
查看>>
程序员究竟该如何提高效率zt
查看>>
希尔排序法(缩小增量法)
查看>>
PHP编程基础学习(一)——数据类型
查看>>
MongoDB-JAVA-Driver 3.2版本常用代码全整理(2) - 查询
查看>>
NPOI处理Word文本中上下角标
查看>>
Android笔记 Handler
查看>>
如何阅读大型前端开源项目的源码(转)
查看>>
java.util.Arrays类详解
查看>>
idea搭建tocmat
查看>>
NYOJ-626-intersection set(二分查找)
查看>>
项目管理之路(1):初步踏入项目管理
查看>>
Java 中 静态方法与非静态方法的区别
查看>>
echarts饼图显示百分比
查看>>
JMS消息
查看>>
Jenkins+ProGet+Windows Batch搭建全自动的内部包(NuGet)打包和推送及管理平台
查看>>
php上传文件及头像预览
查看>>
大四java实习生的一些经历
查看>>
线程池的概念
查看>>
code First 四
查看>>