WPF属性中的依赖属性

WPF属性中的依赖属性

依赖属性:就是一种自己可以没有值,并且可以通过绑定从其他数据源获取值。依赖属性可支WPF中的样式设置、数据绑定、继承、动画及默认值。

依赖属性有这几种特点:

  1. 新功能引入(属性变化通知,限制、验证等功能):

只要依赖属性的值发生改变,wpf就会自动根据属性的元数据触发一系列的动作,这些动作可以重新呈现UI元素,也可以更新当前的布局,刷新数据绑定等等,这种变更的通知最有趣的特点之一就是属性触发器,它可以在属性值改变的时候,执行一系列自定义的动作,而不需要更改任何其他的代码来实现。

  1. 属性值继承:属性值自顶向下沿着元素树进行传递
  2. 节省内存空间:依赖属性和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按钮绑定上面的自定义依赖属性。

运行效果图:

猜你喜欢

转载自blog.csdn.net/weixin_44545554/article/details/89530544