WPF笔记(8)样式(Styles)
开发人员和设计人员使用样式可以对其产品的特定外观进行标准化。WPF 提供了一个强大的样式模型,其基础是 Style元素。
虽然Resource对于在XAML中定义对象的属性十分有用。但是Resource段的主要目的还是用来定义Styles。Styles是应用在元素上的属性值的基本集合。它可以具有批处理功能,能够弥补单一的Resource属性无法在XAML中应用到多个元素的不足。例如,Page中含有大量的button,我们希望这些button都使用一些相同的属性。我们可以将这些属性定义为一个Style,然后将这个style应用到所有的button。WPF中的style还可以处理属性的变化,这些变化可能来自其他属性的触发,也可能来自事件。
Styles类属于System.Windows命名空间。它从Object继承,并且没有子继承。
Style放在资源里,因为Style是“批处理”的资源,它可以修改多个对象的属性值,不从属于单独的元素对象。
TargetType 属性 (Property) 和 x:Key 属性 (Attribute) 的关系
Styles有一个属性:x:Key属性,如果定义了此属性,就相当于是在资源中定义了一个名称为x:Key设定值的Style对象。如果没有定义此属性,那么这个Style将对属于这个Window中所有该控件类型生效。起到了批处理的效果。如:
如果将TargetType属性设置为 具体值(如TextBlock) 而不为样式分配 x:Key,样式就会应用于所有TextBlock元素。这种情况下,x:Key 隐式设置为 {x:Type TextBlock}。这意味着,如果将 x:Key 值显式设置为 {x:Type TextBlock} 之外的任何值,Style就不会自动应用于所有 TextBlock元素。此时,必须通过使用 x:Key 值,将样式显式应用于 TextBlock元素。如果样式位于资源部分,并且未设置样式的 TargetType属性,则必须提供 x:Key。
Setters
Style的最重要的属性是Setters。Setters是Setter和EventSetter等对象的集合。这些对象被称作“Setters”因为他们用来设置属性和事件处理的结果。
Setter是Style的内容属性。如:
<Style ...>
<Setter Property="Control.FontSize" Value="24" />
<EventSetter ... />
<Setter ... />
</Style>
msdn:http://msdn.microsoft.com/zh-cn/library/ms745683.aspx