加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

WPF---依赖属性(一)

发布时间:2020-12-14 05:05:38 所属栏目:百科 来源:网络整理
导读:一、概要 C#中属性是抽象模型的核心部分,而依赖属性是专门针对WPF的。 在WPF库实现中,依赖属性使用普通的C#属性进行了包装,使得我们可以通过和以前一样的方式来使用依赖属性。 依赖属性优点如下: 依赖属性加入了属性变化通知、限制、验证等功能。 节约内

一、概要

C#中属性是抽象模型的核心部分,而依赖属性是专门针对WPF的。

在WPF库实现中,依赖属性使用普通的C#属性进行了包装,使得我们可以通过和以前一样的方式来使用依赖属性。

依赖属性优点如下:

  • 依赖属性加入了属性变化通知、限制、验证等功能。
  • 节约内存:在WinForm中,每个UI控件的属性都赋予了初始值,这样每个相同的控件在内存中都会保存一份初始值。而WPF依赖属性很好地解决了这个问题,

  ?? 它内部实现使用哈希表存储机制,对多个相同控件的相同属性的值都只保存一份。

  • 支持多种提供对象:可以通过多种方式来设置依赖属性的值。

二、依赖属性的定义

定义一般遵循如下步骤:

  • 定义一个类继承自DependencyObject类。
  • 使用public static 声明一个DependencyProperty的变量,该变量就是真正的依赖属性。
  • 在类型的静态构造函数中通过Register方法完成依赖属性的注册。
  • 提供一个依赖属性的包装属性,通过这个属性来完成对依赖属性的读写操作。

  参考代码如下:

 1    public class DataSource : DependencyObject
 2     {
 3         static DataSource()
 4         {
 5             // Using a DependencyProperty as the backing store for Title.  This enables animation,styling,binding,etc...
 6             TitleProperty =
 7                  DependencyProperty.Register("Title",typeof(string),typeof(DataSource),new PropertyMetadata("DefaultTitle",new System.Windows.PropertyChangedCallback(PropertyChangedCall)));
 8         }
 9         public static readonly DependencyProperty TitleProperty;
10         public string Title
11         {
12             get { return (string)GetValue(TitleProperty); }
13             set { SetValue(TitleProperty,value); }
14         }
15 
16         public static void PropertyChangedCall(DependencyObject d,DependencyPropertyChangedEventArgs e)
17         {
18 
19         }
20 
21     }
View Code

  可以使用如下快捷方式生成依赖属性:

  在VS中输入“propdp”然后连续按两次Tab键。

三、依赖属性的优先级

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读