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); }
}
}