WPF依赖属性-依赖属性介绍
2021-06-28 22:06
标签:shadow chm usb 对象 继承 white 耦合 占用 lan WPF的设计理念是:数据驱动,UI与逻辑松耦合 1、依赖属性声明为:类的静态只读对象; 1、依赖属性(值传递)继承 2、属性的改变通知 更详细的介绍参见依赖属性的传递 WPF依赖属性-依赖属性介绍 标签:shadow chm usb 对象 继承 white 耦合 占用 lan 原文地址:https://www.cnblogs.com/MonoHZ/p/14944137.html一、传统的CLR属性
public class Person
{
private string _Name;
public string Name
{
get
{
return _Name;
}
set
{
_Name = value;
}
}
}
二、CLR属性特点:
三、依赖属性
// 1. 使类型继承DependencyObject类
public class Person : DependencyObject
{
// 2. 声明一个静态只读的DependencyProperty 字段
public static readonly DependencyProperty nameProperty;
static Person()
{
// 3. 注册定义的依赖属性
nameProperty = DependencyProperty.Register("Name", typeof(string), typeof(Person),
new PropertyMetadata("Learning Hard",OnValueChanged));
}
// 4. 属性包装器,通过它来读取和设置我们刚才注册的依赖属性
public string Name
{
get { return (string)GetValue(nameProperty); }
set { SetValue(nameProperty, value); }
}
private static void OnValueChanged(DependencyObject dpobj, DependencyPropertyChangedEventArgs e)
{
// 当只发生改变时回调的方法
}
}
四、依赖属性的特点
2、依赖属性是通过DependencyObject注册的属性;
3、依赖属性读取是通过DependencyObject的方法读取;
4、类的依赖属性只有一份,且由DependecyObject维护。
5、多级继承,且大多数字段值不改变的情况下,减少内存占比
?DependencyProperty将一个对象依赖属性存储在一个全局的Hashtable中;通过依赖对象(DependencyObject)的GetValue和SetValue存取数据;
6、?依赖属性值可以通过Binding依赖于其它对象上,这就使得数据源一变动;依赖于此数据源的依赖属性全部进行更新五、依赖属性特性应用
中逻辑树上实际父级变动,在子级没有显式指定值时,默认采用父级的值
?如下图中:窗体上所有的字体都变大(从20变成了50),并不需要通过设置每个控件的属性;只需要设置窗体的属性,这个窗体的子控件就会适应这一改变,并且使用相同的设置
CLR属性只有通过事件响应函数或者回调函数来传递属性性改变; 依赖属性只需配置就可以(见第三部分的示例)五、依赖属性的优先级
下一篇:C#正则表达式