WPF依赖属性与附加属性

1. CLR属性(Common Language Running)

CLR属性主要实现了面向对象的封装。

CLR属性是通过get和set访问器方法来实现的,这些方法允许你在读取或写入属性时执行自定义代码。

C#
    public int MyProperty
    {
        get
        {
            return MyProperty;
        }
        set
        {
            MyProperty = value;
        }
    }

CLR属性与WPF依赖属性和附加属性是不同的,依赖属性和附加属性是WPF中特殊的属性类型,它们提供了一些高级功能,比如数据绑定、样式和动画支持。

2. 依赖属性(Dependency Property)
2.1 对内存的使用机制
  • CLR属性是常见的.NET属性类型,每个对象实例都有自己的一套CLR属性。每当创建一个新的对象实例时,都会为该实例的所有CLR属性分配内存。
  • 依赖属性是WPF中的特殊属性类型,它的设计目标是减少内存使用。依赖属性并不为每个对象实例分配内存,而是将属性值存储在全局的哈希表中。对于拥有依赖属性的类来说,其实例化的对象可以称作为依赖对象(Dependency Object),WPF中允许依赖对象在被创建时并不包含用于数据存储的空间,只保留在需要用到数据时能够获得默认值或借用其它对象的数据,具有实施分配空间的能力。
2.2 自定义依赖属性

在编写一般属性时,通常是声明字段,然后添加get和set块封装为CLR属性。

而在编写依赖属性时,需要进行下面四个步骤

C#
  public class model : DependencyObject//1.使类型继承DependencyObject类
  {
      //依赖属性
      //2.声明静态只读的DependencyProperty字段
      public static readonly DependencyProperty MyProperty
      //3.注册依赖属性
      = DependencyProperty.Register("My", typeof(int), typeof(Entitys));

      //依赖属性包装器
      public int My
      {
          //4.使用属性封装,get和set块内部使用GetValue()和SetValue()操作属性值
          get { return (int)GetValue(MyProperty); }
          set { SetValue(MyProperty, value); }
      }

  }
订阅评论
提醒
0 评论
最旧
最新 最多投票
内联反馈
查看所有评论
滚动至顶部