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

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

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

如下面的代码片段:

<Style x:Key="ButtonPrimary" BasedOn="{StaticResource ButtonBaseStyle}" TargetType="{x:Type Button}">
        <Setter Property="Background" Value="{DynamicResource PrimaryBrush}" />
        <Setter Property="BorderBrush" Value="{DynamicResource PrimaryBrush}" />
    </Style>

定义了一个按钮样式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样式:

<Button Style="{StaticResource ButtonPrimary}" Content="Click Me" />

请确保PrimaryBrush资源已经在相应的资源字典中定义,例如在<Window.Resources><App.xaml><Application.Resources>中:

<Application.Resources>
    <SolidColorBrush x:Key="PrimaryBrush" Color="#0078D7" />
</Application.Resources>

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值