WPF属性中的依赖属性
依赖属性:就是一种自己可以没有值,并且可以通过绑定从其他数据源获取值。依赖属性可支WPF中的样式设置、数据绑定、继承、动画及默认值。
依赖属性有这几种特点:
- 新功能引入(属性变化通知,限制、验证等功能):
只要依赖属性的值发生改变,wpf就会自动根据属性的元数据触发一系列的动作,这些动作可以重新呈现UI元素,也可以更新当前的布局,刷新数据绑定等等,这种变更的通知最有趣的特点之一就是属性触发器,它可以在属性值改变的时候,执行一系列自定义的动作,而不需要更改任何其他的代码来实现。
- 属性值继承:属性值自顶向下沿着元素树进行传递
- 节省内存空间:依赖属性和CLR属性在内存的使用上是截然不同的,每个CLR属性都包含一个非static的字段。而wpf允许对象在创建的时候并不包含用于存储数据的空间,只保留在需要用到数据的时候能够获得该默认值,即用其他对象数据或者实时分配空间的能力。
如何自定义依赖属性:在界面代码中自定义依赖属性,给其唯一“x:Key="bgBrush"”
代码:
<Grid>
<Grid.Resources>
<!--线性渐变画刷-->
<LinearGradientBrush x:Key="bgBrush" StartPoint="0,0" EndPoint="1,1" Opacity="0.8">
<GradientStop Color="Yellow" Offset="0.0"/>
<GradientStop Color="Red" Offset="0.25"/>
<GradientStop Color="Blue" Offset="0.75"/>
<GradientStop Color="LimeGreen" Offset="1.0"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="bgBrush_1" StartPoint="0,0" EndPoint="0,1" Opacity="0.8">
<GradientStop Color="Yellow" Offset="0.0"/>
<GradientStop Color="Red" Offset="0.25"/>
<GradientStop Color="Blue" Offset="0.75"/>
<GradientStop Color="LimeGreen" Offset="1.0"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="bgBrush_2" StartPoint="0,0" EndPoint="1,0" Opacity="0.8">
<GradientStop Color="Yellow" Offset="0.0"/>
<GradientStop Color="Red" Offset="0.25"/>
<GradientStop Color="Blue" Offset="0.75"/>
<GradientStop Color="LimeGreen" Offset="1.0"/>
</LinearGradientBrush>
</Grid.Resources>
<!--依赖属性绑定值-->
<Button x:Name="btnSubmit" Background="{StaticResource bgBrush}" Height="60" Width="120" Margin="90,9,82,200" >
线性渐变画刷
</Button>
<Button x:Name="btnSubmit1" Background="{StaticResource bgBrush_1}" Height="60" Width="120" Margin="88,93,84,116" >
垂直线性渐变画刷
</Button>
<Button x:Name="btnSubmit2" Background="{StaticResource bgBrush_2}" Height="60" Width="120" Margin="86,174,86,35" >
水平线性渐变画刷
</Button>
</Grid>
这个依赖属性资源定义了一个线性渐变画刷,起始点“StartPoint="0,0"”,终点“EndPoint="1,1"”透明度80%,给其四个不同位置的不同颜色,改变起始点“StartPoint”,终点“EndPoint”获得不同的颜色效果。Button按钮绑定上面的自定义依赖属性。
运行效果图: