目录
引言
依赖属性可以提供数据绑定、样式、动画等功能,如果控件本身未提供而我们需要一些这样的功能,就需要编写依赖属性。依赖属性DP是控件/类的静态字段(只能在控件自身的类中编写),并且它只存在于依赖对象上(通过全局的静态HashTable存储这些控件/类的依赖属性)。
附加属性是针对已有控件无法编写它的类,就没法为它添加依赖属性,需要将某些属性通过外在方式附加在该控件上,这也就决定了附加属性可以用在多种控件上。
1、依赖属性
依赖属性的编写:propdp +两下tab键
public class CustomTextBox:TextBox
{
public bool IsHighLighted
{
get { return (bool)GetValue(IsHighLightedProperty); }
set { SetValue(IsHighLightedProperty, value); }
}
public static readonly DependencyProperty IsHighLightedProperty =
DependencyProperty.Register("IsHighLighted", typeof(bool), typeof(TextBox), new PropertyMetadata(false));
}
这相当于编写自定义控件,它的属性需要实现数据绑定、样式、动画等功能,需要这样写依赖属性。例如我们先相对TextBox增加一个高亮效果,通过属性控制是否高亮:
1.1、可以在资源中声明样式触发器,触发相应的动画效果等:
<Window.Resources>
<Style TargetType="local:CustomTextBox">
<Style.Triggers>
<Trigger Property="IsHighLighted" Value="True">
<Setter Property="Background" Value="Yellow"/>
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>
<StackPanel>
<local:CustomTextBox Text="123456" IsHighLighted="True"/>
</StackPanel>
1.2、也可以编写回调函数