WPF中Style样式及其触发器

开发工具与关键技术:WPF C#
作者:黄济民
撰写时间:2021年10月15日

1、Setter,设置器。什么的设置器呢?属性值的。我们给属性赋值的时候一般都采用“属性名=属性值”的形式。Setter类的Property属性用来指明你想为目标的那个属性赋值;Setter类的Value属性则是你提供的属性值。
2、下面的例子中在Window的资源词典中放置一个针对TextBlock的Style,Style中使用若干Setter来设定TextBlock的一些属性,这样程序中的TextBlock就会具有统一的风格,除非你使用{x:Null}显示地清空Style
XAML代码如下:

<Window.Resources>
        <!--定义TextBlock样式-->
        <Style TargetType="TextBlock">
            <Style.Setters>
                <!--字体大小:24-->
                <Setter Property="FontSize" Value="24"/>
                <!--文本装饰:下划线-->
                <Setter Property="TextDecorations" Value="Underline"/>
                <!--字体样式:斜体-->
                <Setter Property="FontStyle" Value="Italic"/>
            </Style.Setters>
        </Style>
</Window.Resources>
<StackPanel Margin="5">
        <TextBlock Text="Hello WPF"/>
        <TextBlock Text="This is a sample for Style!"/>
        <!--使用{
   x:Null}显示地清空Style-->
        <TextBlock Text="by Tim 2020.06.19" Style="{x:Null}"/>
</StackPanel>

因为Style的内容属性是Setters,所以我们可以直接在

<Style TargetType="TextBlock">
            <!--字体大小:24-->
            <Setter Property="FontSize" Value="24"/>
            <!--文本装饰:下划线-->
            <Setter Property="TextDecorations" Value="Underline"/>
            <!--字体样式:斜体-->
            <Setter Property="FontStyle" Value="Italic"/>
</Style>

3、Style中的Trigger
Trigger,触发器,即当某些条件满足时会触发一个行为(比如某些值的变化或动画的发生等)。触发器比较像事件。事件一般是由用户操作触发的,而触发器除了有事件触发型的EventTrigger外还有数据变化触发型的Trigger/DataTrigger及多条件触发型的MultiTrigger/MultiDataTrigger等。
一、基本Trigger
Trigger类是最基本的触发器。类似于Setter,Trigger也有Property和Value这两个属性,Property是Trigger关注的属性名称,Value是触发条件。Trigger类还有一个Setter属性,此属性值是一组Setter,一旦触发条件被满足,这组Setter的“属性—值”就会被应用,触发条件不在满足后,各属性值会被还原。下面这个例子中包含一个针对CheckBox的Style,当CheckBox的IsChecked属性为true的时候前景色和字体会改变。XAML代码如下:

<Window.Resources>
        <!--复选框CheckBox样式-->
        <Style TargetType="CheckBox">
            <Style.Triggers>
                <!--IsChecked选中改变字体大小为20,字体样式为橙色Orange-->
                <Trigger Property="IsChecked" Value="true">
                    <Trigger.Setters>
                        <Setter Property="FontSize" Value="20"/>
                        <Setter Property="Foreground" Value="Orange"/>
                    </Trigger.Setters>
                </Trigger>
            </Style.Triggers>
        </Style&
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值