更新:2007 年 11 月
在类型的不同实例之间共享属性、资源和事件处理程序。
<ContentPropertyAttribute("Setters")> _ <LocalizabilityAttribute(LocalizationCategory.Ignore)> _ Public Class Style _ Inherits DispatcherObject _ Implements INameScope, IAddChild
Dim instance As Style
[ContentPropertyAttribute("Setters")] [LocalizabilityAttribute(LocalizationCategory.Ignore)] public class Style : DispatcherObject, INameScope, IAddChild
[ContentPropertyAttribute(L"Setters")] [LocalizabilityAttribute(LocalizationCategory::Ignore)] public ref class Style : public DispatcherObject, INameScope, IAddChild
/** @attribute ContentPropertyAttribute("Setters") */ /** @attribute LocalizabilityAttribute(LocalizationCategory.Ignore) */ public class Style extends DispatcherObject implements INameScope, IAddChild
public class Style extends DispatcherObject implements INameScope, IAddChild
<Style> Setters </Style>
可以在从 FrameworkElement 或 FrameworkContentElement 派生的任何元素上设置 Style。样式通常在 Resources 节内部声明为资源。由于样式是一种资源,它们遵循适用于所有资源的相同范围规则,因此样式的声明位置将影响它的适用范围。例如,如果在应用程序定义XAML 文件的根元素中声明样式,则该样式可在应用程序中的任何位置使用。如果您在创建导航应用程序时在该应用程序的一个XAML 文件中声明了样式,则该样式只能在该XAML 文件中使用。有关资源范围规则的更多信息,请参见资源概述。
样式声明由 Style 对象构成,该对象包含由一个或多个 Setter 对象组成的集合。每个 Setter 都包含一个 Property 和一个 Value。属性是样式所应用于的元素的属性名。将样式声明为资源后,就可以像引用任何其他资源一样引用样式。
如果在 setter 集合中有多个 setter 具有相同的 Property 属性值,则使用最后声明的 setter。同样,如果在样式内和元素上直接为同一属性设置值,则直接在元素上设置的值优先。
使用 Windows Presentation Foundation (WPF) 样式和模板化模型不仅可以维护和共享外观,还可以让呈现与逻辑分离。样式和模板化模型包括一套允许您自定义UI 的功能。这套功能包括 Style 类以及下列组件:
Trigger
EventTrigger 以及Storyboard
ControlTemplate
DataTemplate
有关更多信息,请参见样式设置和模板化。
下面的示例演示一个样式声明,该声明将影响 Control 的 Background 属性。
<Style x:Key="Style1"> <Setter Property="Control.Background" Value="Yellow"/> </Style>
若要应用上面的样式,请执行下列操作:
<Label Content="Yellow Background" Style="{StaticResource Style1}" />
还可以使用 TargetType 属性将样式应用于给定类型的所有元素。将目标类型添加至样式意味着,您不必再完全限定使用 ClassName.PropertyName 语法设置的属性。下面的示例定义一个将应用于每个 TextBlock 元素的样式。
<Style TargetType="{x:Type TextBlock}"> <Setter Property="FontFamily" Value="Segoe Black" /> <Setter Property="HorizontalAlignment" Value="Center" /> <Setter Property="FontSize" Value="12pt" /> <Setter Property="Foreground" Value="#777777" /> </Style>
很多 WPF 控件都包含其他 WPF 控件的组合,因此创建应用于某一类型的所有控件的样式将具有广泛的影响。例如,如果您创建了一个针对 Canvas 中的 TextBlock 控件的样式,则该样式将应用于画布中的所有 TextBlock 控件,即使 TextBlock 是另一个控件(如 ListBox)的一部分也不例外。
有关如何扩展已定义样式或从其继承的信息,请参见 BasedOn 页。
Windows Vista