FrameworkElement.Style 属性

定义

获取或设置在布局和呈现期间为此对象应用的实例 Style

public:
 property Style ^ Style { Style ^ get(); void set(Style ^ value); };
Style Style();

void Style(Style value);
public Style Style { get; set; }
var style = frameworkElement.style;
frameworkElement.style = style;
Public Property Style As Style
<frameworkElement Style="{StaticResource styleResourceKey}"/>

属性值

对象的应用样式(如果存在);否则为 null。 默认构造的 FrameworkElement 的默认值为 null

注解

Style直接设置 属性不是设置 UI 元素外观样式的最常见方法。 而是通过以下方法之一影响 UI 元素的外观:

  • 通常,在 XAML 中将 UI 元素的各个 UI 属性设置为属性。 FrameworkElement.Style 仅适用于当前元素,并且 的任何 FrameworkElement.Style 值会被本地属性值覆盖,因此设置本地值更直接、更可预测。 有关 Style 值与本地属性值的关系的详细信息,请参阅 依赖属性概述
  • 控件作者通常编写可模板化控件,但也附带默认模板。 应用可以使用控件并通过提供新的 ControlTemplate 来更改其外观,该控件是资源中定义的 Style 的一部分。 此样式通常使用 隐式样式 功能应用,而不是通过设置 Style来应用。 有关详细信息,请参阅 设置控件样式
  • 控件作者还公开属性,这些属性引用控件的各个部分可以仅将样式或值应用于该部件,因此无需完全重新模板化控件。 此处要设置更具体的属性,而不是 FrameworkElement.Style
  • 视觉状态模型经常在运行时重置控件的样式,以响应向用户直观显示的状态更改。 例如,控件模板通常具有“已聚焦”状态,该状态向控件外观添加视觉焦点指示器,以便键盘用户可以看到 UI 中的哪个元素具有当前键盘焦点。 有关视觉状态概念的详细信息,请参阅 XAML 控件模板

可以更改已在样式中设置的各个属性的值。 例如,可以在运行时设置 Template 属性,即使此属性已由样式设置。 或者,可以将资源库添加到 Setters 中的集合。 但是,一旦加载的对象使用该样式,就应将 样式 视为密封样式。 可以通过检查 的 StyleIsSealed 值来检测此状态。 样式一旦被连接到 UI 所显示页面的对象树的已加载对象引用,就会认为该样式正在使用中。 Style当使用该样式的对象引发其 SettersLoaded 事件时,还可以将 及其 视为密封。 尝试更改使用中样式 (的单个属性(如集合中的 Setters 属性) 会引发异常。

派生自 Control 的类具有一个额外的入口点,这对于控制样式和模板应用程序方面的作者很有用。 FrameworkElement 定义在加载之前调用的虚拟回调 OnApplyTemplate。 派生自 Control 的类可以重写此回调,以在使用样式之前调整模板设置的属性值。

如果在运行时查询, Style 属性不会返回来自已应用模板或活动视觉状态的样式。 它仅返回由 属性显式设置的 Style 样式。 此外,它不返回隐式样式。

适用于