备注:类关系结构图如下:
样式(Style)
Style 就是指控件的外观行为。构成 Style 最重要的两种严肃是 Setter 和 Trigger,Setter 类帮助我们设置控件的静态外观风格,Trigger 类则帮助我们设置控件的行为风格。
Style 中的 Setter
我们给属性赋值的时候一般采用“属性名=属性值”的形式,但是 Setter 类是 Property 来指明哪个属性,Value 指明属性的值。
- 一个例子
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sjjfVn9P-1611043438052)(./images/11_02_01.png )]
备注:
-
Setters 是 Style 的属性。所以 Style 下面有 Style.Setters.
-
Setters 是 Style 的内容属性,所以也可以写为:
-
设置了 Style 如果不想要,则需要
Style="{x:Null}"
. -
如果想设置控件的 ControlTemplate 只需要把 Setter 的 Property 设为 Template 并为 Value 提供一个 ControlTemplate 对象即可。
Style 中的 Trigger
基本 Trigger
- 一个例子:当 CheckBox 的 IsChecked 属性为 true 的时候前景色和字体会改变。
备注:- Trigger 是最基本的触发器,Trigger 也有 Property 和 Value 这两个属性,Property 是 Trigger 关注的属性名称,Value 是触发条件。
- Trigger 类还有一个 Setters 属性,此属性值是一组 Setter,一旦触发条件满足,这组 Setter 就会被应用,触发条件不再满足后,个属性值会被还原。
MultiTriggr 多条件触发器
备注:
- 他意思是必须多个条件同时满足才会触发。
- 注意结构:
<Style TargetType="..."> <Style.Triggers> <MultiTrigger> <MultiTrigger.Conditions> <Condition Property="..." Value="..." /> ... </MultiTrigger.Conditions> <MultiTriggers.Setters> <Setter Property="..." Value="..." /> ... </MultiTriggers.Setters> </MultiTrigger> </Style.Triggers> </Style >
由数据驱动的 DataTrigger
程序中经常会遇到基于数据执行某些判断的情况,遇到这种情况时可以考虑使用 DataTrigger。DataTrigger 对象的 Binding 属性会把数据源源不断送过来,一旦送过来的值与 Value 属性一致,DataTrigger 即被触发。
备注:
- 为了将控件自己作为数据源,使用了 RelativeSource。
多数据条件触发的 MultiDataTrigger
有时我们会遇到多个数据条件同时满足才能触发变化的需求。
由事件驱动的 EvenTrigger
EventTrigger 是触发器中最特殊的一个。首先,它不是由属性值或数据的变化来触发的,而是由事件来触发的;其次,被触发后它并非一组 Setter,而是执行一段动画。因此,UI 层动画效果往往与 EventTrigger 有关。