样式(2)———样式继承BaseOn

楔子:新的布局时,样式想跟之前的不一样,但又想继承之前的样式,有什么办法?

解决这个问题方式之一,可以通过样式继承的方式。

如下面的代码片段:

定义了一个按钮样式ButtonPrimary,这个样式基于另一个名为ButtonBaseStyle的基础样式,并设置了按钮的背景和边框颜色使用动态资源PrimaryBrush。以下是对这段代码的解释和如何使用它:

  1. 样式键(x:Key): ButtonPrimary是这个样式的名称,您可以使用这个名称来引用这个样式。

  2. 基础样式(BasedOn): {StaticResource ButtonBaseStyle}表示这个样式是基于名为ButtonBaseStyle的静态资源。这意味着ButtonPrimary样式将继承ButtonBaseStyle中定义的所有属性和行为。

  3. 目标类型(TargetType): {x:Type Button}指定这个样式是针对Button控件的。

  4. 设置器(Setter):

    • 第一个Setter设置了按钮的Background(背景)属性,使用动态资源{DynamicResource PrimaryBrush}来定义背景颜色。
    • 第二个Setter设置了按钮的BorderBrush(边框颜色)属性,同样使用动态资源{DynamicResource PrimaryBrush}
  5. 动态资源(DynamicResource): 使用{DynamicResource}意味着在运行时每次引用这些资源时,WPF都会去查找最新的资源值。这与{StaticResource}不同,后者只在第一次引用时查找资源值,之后即使资源值改变,使用{StaticResource}的引用也不会更新。

要使用这个样式,需要在XAML中将按钮的Style属性绑定到ButtonPrimary样式:

请确保PrimaryBrush资源已经在相应的资源字典中定义,例如在中:


    

在这个例子中,PrimaryBrush是一个SolidColorBrush资源,定义了一个颜色值#0078D7,这可以是一个十六进制颜色值或任何WPF支持的颜色定义。

此外,确保ButtonBaseStyle资源也已经定义,它应该包含按钮的一些基本样式设置,例如字体大小、边框厚度等,ButtonPrimary样式将继承这些设置。如果ButtonBaseStyle没有定义,你需要先创建它,或者从现有的样式中继承。

总结:通过以上例子,就可以方便的进行样式继承。

你可能感兴趣的:(C#,c#)