只读依赖属性

只读依赖属性
有些地方必须要用到只读依赖属性,比如 Trigger等,同时也因为内部可能有多个提供者修改其值,那么一个只读依赖属性怎么创建呢?其实创建一个只读的依赖属性和创建一个一般的依赖属性大同小异。
下面我们就用一个简单的例子来概括一下:
只读依赖属性

XAML代码:只读依赖属性

效果如图:
只读依赖属性
附加属性:附加属性是一种特殊的依赖属性。这是WPF的特性之一,通俗的理解起来就是,别人有的属性,由于你跟他产生了关系所以你也有了这个属于他的属性。
附加属性是说一个属性本来不属于某个对象,但由于某种需求而被后来附加上,也就是把对象放入一个特定环境后对象才具有的属性就称为附加属性,附加属性的作 用就是将属性与数据类型解耦,让数据类型的设计更加灵活,
附加属性是依赖属性的一种特殊形式,它可以让用户在一个元素中设置其他元素的属性。一般来说,附加属性是用于一个父元素定位其他元素布局的。
附加属性就是自己没有这个属性,在某些上下文中需要就被附加上去。比如StackPanel的Grid.Row属性,如果我们定义StackPanel类时定义一个Row属性是没有意义的,因为我们并不知道一定会放在Grid里,这样就造成了浪费。
例如,下面转场控件的定义使用了Grid的Row属性来将自身定位到特定的行中。
只读依赖属性

使用附加属性,可以避开可能会防止一个关系中的不同对象在运行时相互传递信息的编码约定
下面代码中的Button 就是用了Canvas的Canvas.Top和Canvas.Left=“20” 来进行布局定位,那么这两个就是传说中的附加属性:只读依赖属性

下面我们来看一个最简单的应用:首先我们注册(构造)一个附加属性:只读依赖属性

然后,我们在程序中使用这个我们自己定义的附加属性:只读依赖属性

在XAML中就可以使用刚才注册(构造)的附加属性了:如下图:
只读依赖属性
通过调整角度值,显示不同的效果如下两图。图1,图2:

只读依赖属性
只读依赖属性