WPF使用触发器需要注意优先级问题解决

 更新时间:2023年01月30日 10:59:16   作者:鲤籽鲲  
本文主要介绍了WPF使用触发器需要注意优先级问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一、问题开始

现在有个需求:
初始状态(未选中)的时候,CheckBox的Content 为 “乒乓球”,然后选中之后,将“乒乓球”就改为“我爱乒乓球” 并且将文字加粗变为红色。
然后就编写代码如下:

    <Window.Resources>
        <Style x:Key="cb" TargetType="{x:Type CheckBox}">
            <Setter Property="Foreground" Value="Green"></Setter>
            <Setter Property="FontSize" Value="20"></Setter>
            <Style.Triggers>
                <Trigger Property="IsChecked" Value="True">
                    <Setter Property="Content" Value="我爱乒乓球"></Setter>
                    <Setter Property="FontWeight" Value="Bold"></Setter>
                    <Setter Property="Foreground" Value="Red"></Setter>
                </Trigger>
            </Style.Triggers>
        </Style>
    </Window.Resources>
    <WrapPanel VerticalAlignment="Top" Background="LightBlue">
        <CheckBox Content="乒乓球" Style="{StaticResource cb}" Margin="10"></CheckBox>
    </WrapPanel>

实现效果如下:

在这里插入图片描述

奇怪了,为什么文字没有改变呢?

二、问题说明

以上问题就是使用触发器初期很容易犯的错误:没有注意样式设置的优先级。
如上案例中:<CheckBox Content="乒乓球" Style="{StaticResource cb}" Margin="10"></CheckBox>

将CheckBox自身的元素标签上设置了Content,这里设置的属性具有最高的优先级,那么元素标签就不会再去使用其他地方设置的属性值,因此无论其他地方如何改变都不会生效。

三、问题订正

解决该问题只需要将需要在触发器中需要设置的属性中,将默认值设置到样式内,而不是设置在标签元素自身上。代码如下所示:

    <Window.Resources>
        <Style x:Key="cb" TargetType="{x:Type CheckBox}">
            <Setter Property="Foreground" Value="Green"></Setter>
            <Setter Property="FontSize" Value="20"></Setter>
            <Setter Property="Content" Value="乒乓球"></Setter>
            <Style.Triggers>
                <Trigger Property="IsChecked" Value="True">
                    <Setter Property="Content" Value="我爱乒乓球"></Setter>
                    <Setter Property="FontWeight" Value="Bold"></Setter>
                    <Setter Property="Foreground" Value="Red"></Setter>
                </Trigger>
            </Style.Triggers>
        </Style>
    </Window.Resources>
    <WrapPanel VerticalAlignment="Top" Background="LightBlue">
        <CheckBox Style="{StaticResource cb}" Margin="10"></CheckBox>
    </WrapPanel>

在这里插入图片描述

总结

到此这篇关于WPF使用触发器需要注意优先级问题解决的文章就介绍到这了,更多相关WPF触发器优先级内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C#中矩形数组的定义和元素访问

    C#中矩形数组的定义和元素访问

    矩形数组是指由相同数据类型的元素按照行和列组成的二维数组,可以使用索引访问矩形数组中的单个元素,也可以使用循环结构遍历矩形数组中的所有元素,此外,我们还需要注意不要修改矩形数组的维度,避免使用矩形数组造成内存占用过高等问题
    2024-01-01
  • WinForm中KeyDown,KeyPress和KeyUp的顺序与区别解析

    WinForm中KeyDown,KeyPress和KeyUp的顺序与区别解析

    这篇文章主要介绍了WinForm中KeyDown,KeyPress和KeyUp的顺序与区别解析,对C#初学者来说很有学习借鉴价值,需要的朋友可以参考下
    2014-08-08
  • C#实现简化QQ聊天窗口

    C#实现简化QQ聊天窗口

    这篇文章主要为大家详细介绍了C#实现简化QQ聊天窗口,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • C#如何通过probing指定dll寻找文件夹详解

    C#如何通过probing指定dll寻找文件夹详解

    这篇文章主要给大家介绍了关于C#如何通过probing指定dll寻找文件夹的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12
  • C#中Dapper的使用教程

    C#中Dapper的使用教程

    Dapper是一款轻量级ORM工具(Github),Dapper语法十分简单。并且无须迁就数据库的设计,今天通过本文给大家介绍C# Dapper的使用,感兴趣的朋友一起看看吧
    2021-07-07
  • c#文件下载示例的4种方法分享

    c#文件下载示例的4种方法分享

    这篇文章主要介绍了c#文件下载示例的4种方法,有TransmitFile实现下载,WriteFile实现下载,WriteFile分块下载,流方式下载,需要的朋友可以参考下
    2014-03-03
  • C#中异步是4种实现方式详解

    C#中异步是4种实现方式详解

    这篇文章主要为大家详细介绍了C#中异步实现方式的相关知识,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以跟随小编一起学习一下
    2024-03-03
  • C#拼图游戏编写代码(2)

    C#拼图游戏编写代码(2)

    这篇文章主要为大家详细介绍了C#拼图游戏的编写代码下篇,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • 通过C#实现裁剪PDF页面功能

    通过C#实现裁剪PDF页面功能

    在处理PDF文档时,有时需要精确地裁剪页面以适应特定需求,比如去除广告、背景信息或者仅仅是为了简化文档内容,本文将指导如何使用免费.NET控件通过C#实现裁剪PDF页面,需要的朋友可以参考下
    2024-09-09
  • C#推送信息到APNs的方法

    C#推送信息到APNs的方法

    这篇文章主要介绍了C#推送信息到APNs的方法,涉及C#推送通知到苹果APNs的实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-05-05

最新评论