WPF 为button动态设置不同的模板
有时候需要动态的设置一些按钮的状态模板。使一个button显示不同的内容,比如Button未点击安装显示:

安装后显示:

可以通过设置button的content,通过content来设置不同的模板来实现功能,以下是代码:
MainWindow.xaml
<Windowx:Class="WPF_ButtonTemplate.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:local="clr-namespace:WPF_ButtonTemplate"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"Title="MainWindow"Width="800"Height="450"mc:Ignorable="d"><Window.Resources><BitmapImage x:Key="Setting_Extension" UriSource="pack://application:,,,/Installed.png" /><ControlTemplate x:Key="UnInstallTemplate" TargetType="Button"><Borderx:Name="border1"Width="100"Height="30"Background="LightGray"BorderBrush="DarkGray"BorderThickness="1.5"CornerRadius="8"><TextBlockx:Name="contentTB"HorizontalAlignment="Center"VerticalAlignment="Center"Text="{TemplateBinding Content}" /></Border></ControlTemplate><ControlTemplate x:Key="InstalledTemplate" TargetType="Button"><Border x:Name="border1" Background="LightYellow" CornerRadius="8"><StackPanel Margin="13,7,13,7" Orientation="Horizontal"><ImageWidth="16"Height="16"HorizontalAlignment="Left"VerticalAlignment="Center"Source="{DynamicResource Setting_Extension}" /><TextBlockx:Name="contentTB"Margin="4,0,0,0"HorizontalAlignment="Center"VerticalAlignment="Center"FontSize="{TemplateBinding FontSize}"Foreground="{TemplateBinding Foreground}"Text="{TemplateBinding Content}" /></StackPanel></Border></ControlTemplate><Style x:Key="NomalBtn" TargetType="Button"><Setter Property="Width" Value="100" /><Setter Property="Height" Value="30" /><Style.Triggers><Trigger Property="Content" Value="未安装"><Setter Property="Template" Value="{StaticResource UnInstallTemplate}" /></Trigger><Trigger Property="Content" Value="已安装"><Setter Property="Template" Value="{StaticResource InstalledTemplate}" /></Trigger></Style.Triggers></Style></Window.Resources><Grid><Buttonx:Name="btn"Click="Button_Click"Content="未安装"Style="{StaticResource NomalBtn}" /></Grid>
</Window>
MainWindow.cs
using System.Windows;namespace WPF_ButtonTemplate
{/// <summary>/// Interaction logic for MainWindow.xaml/// </summary>public partial class MainWindow : Window{public MainWindow(){InitializeComponent();}private void Button_Click(object sender, RoutedEventArgs e){if (string.Equals(btn.Content, "未安装"))btn.Content = "已安装";elsebtn.Content = "未安装";}}
}
项目免费下载地址:
【免费】WPF-ButtonTemplate资源-CSDN文库
相关文章:
WPF 为button动态设置不同的模板
有时候需要动态的设置一些按钮的状态模板。使一个button显示不同的内容,比如Button未点击安装显示: 安装后显示: 可以通过设置button的content,通过content来设置不同的模板来实现功能,以下是代码: MainWi…...
【C++贪心 DFS】2673. 使二叉树所有路径值相等的最小代价|1917
本文涉及知识点 C贪心 反证法 决策包容性 CDFS LeetCode2673. 使二叉树所有路径值相等的最小代价 给你一个整数 n 表示一棵 满二叉树 里面节点的数目,节点编号从 1 到 n 。根节点编号为 1 ,树中每个非叶子节点 i 都有两个孩子,分别是左孩子…...
虚幻引擎GAS入门学习笔记(一)
虚幻引擎GAS入门(一) Gameplay Ability System(GAS) 是一个模块化且强大的框架,用于管理虚幻引擎中的游戏玩法逻辑。它的核心组成部分包括 Gameplay Ability(定义和执行能力)、Gameplay Effect(应用和管理…...
Excel:vba实现合并工作表(表头相同)
这个代码应该也适用于一些表头相同的工作表的汇总,只需要修改想要遍历的表,适用于处理大量表头相同的表的合并 这里的汇总合并表 total 是我事先创建的,我觉得比用vba代码创建要容易一下,如果不事先创建汇总表就用下面的代码&…...
Redis:分布式 - 主从复制
Redis:分布式 - 主从复制 概念配置主从模式info replicationslave-read-onlytcp-nodelay 命令slaveof 主从结构一主一从一主多从 主从复制流程数据同步命令全量同步部分同步实时同步 节点晋升 概念 Redis的最佳应用,还是要在分布式系统中。对于非分布式…...
el-date-picker设置只有某些日期可选
示例图: <el-date-pickerv-model"topFormObj.upTime"type"date"value-format"timestamp"format"dd/MM/yyyy":picker-options"pickerOptions" /> 固定限制每周的周末周三不可选 data() {return {pickerOp…...
java数据库操作-cnblog
创建lib目录,填入jar包 选择 libraries添加lib目录 package nb;import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException;public class JDBCtest {private static final String url "jdbc:mysql://localhost:3306/test?c…...
HCIP-HarmonyOS Application Developer 习题(九)
(多选) 1、HarmonyOS多窗口交互能力提供了以下哪几种交互方式? A. 全局消息通知 B.平行视界 C.悬浮窗 D.分屏 答案:BCD 分析:系统提供了悬浮窗、分屏、平行视界三种多窗口交互,为用户在大屏幕设备上的多任务并行、便捷的临时任务…...
redis集成到spring boot中使用
(一)添加依赖 redis服务器在官网中公开了自己使用的协议--RESP,所以我们可以使用这个协议来访问redis服务器,但是如果我们要自己实现库,那肯定是非常麻烦的,所以我们可以使用网上的库,我们直接调…...
Spring Boot、Spring MVC和Spring有什么区别
人要长大,就要学会不断接受事件的变化 —— 24.10.14 spring是一个IOC容器,用来管理Bean,使用依赖注入实现控制反转,可以很方便的整合各种框架,提供AOP机制弥补OOP的代码重复问题、更方便将不同类不同方法中的共同处理…...
Flip动画
前言 最近在做复图标库功能时,感觉这个功能在使用上有些“生硬”。如随机删除一个图标,后面的元素在视觉上是“瞬间移动”过来补位的。想着做个小优化,简单加个动画效果吧。 看起来确实“花里胡哨”了,实现也很简单, …...
Java通过RAG构建专属知识问答机器人_超详细
RAG:融合检索与生成的文本精准生成技术 检索增强生成(RAG)是一种技术,它通过结合检索模型和生成模型来提高文本生成的准确性。具体来说,RAG首先利用检索模型从私有或专有的数据源中搜索相关信息,然后将这些…...
2.1 使用点对点信道的数据链路层
欢迎大家订阅【计算机网络】学习专栏,开启你的计算机网络学习之旅! 文章目录 前言1 通信信道类型2 数据链路3 帧4 透明传输5 差错检测 前言 在计算机网络通信中,数据链路层起着关键作用。它为直接相连的网络设备之间提供可靠的数据传输服务。…...
台式机来电自启动设置
在前司时,由于有些工作需要用到台式机,且一到节假日或者突然停电等情况,电脑每次都需要自己手动开机,后来研究了一下,发现可以在BIOS里面更改设置,从而变成关机的情况下,只要来电就能自动开机&a…...
【最新华为OD机试E卷-支持在线评测】考勤信息(100分)多语言题解-(Python/C/JavaScript/Java/Cpp)
🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 💻 ACM金牌🏅️团队 | 大厂实习经历 | 多年算法竞赛经历 ✨ 本系列打算持续跟新华为OD-E/D卷的多语言AC题解 🧩 大部分包含 Python / C / Javascript / Java / Cpp 多语言代码 👏 感谢大家的订阅➕ 和 喜欢�…...
netdata保姆级面板介绍
netdata保姆级面板介绍 基本介绍部署流程下载安装指令选择设置KSM为什么要启用 KSM?如何启用 KSM?验证 KSM 是否启用注意事项 检查端口启动状态 netdata和grafana的区别NetdataGrafananetdata各指标介绍总览system overview栏仪表盘1. CPU2. Load3. Disk…...
苹果最新论文:LLM只是复杂的模式匹配 而不是真正的逻辑推理
大语言模型真的可以推理吗?LLM 都是“参数匹配大师”?苹果研究员质疑 LLM 推理能力,称其“不堪一击”!苹果的研究员 Mehrdad Farajtabar 等人最近发表了一篇论文,对大型语言模型 (LLM) 的推理能…...
Python知识点:基于Python工具,如何使用Scikit-Image进行图像处理与分析
开篇,先说一个好消息,截止到2025年1月1日前,翻到文末找到我,赠送定制版的开题报告和任务书,先到先得!过期不候! 基于Python的Scikit-Image图像处理与分析指南 在Python的科学计算生态系统中&am…...
MongoDB初学者入门教学:与MySQL的对比理解
🏝️ 博主介绍 大家好,我是一个搬砖的农民工,很高兴认识大家 😊 ~ 👨🎓 个人介绍:本人是一名后端Java开发工程师,坐标北京 ~ 🎉 感谢关注 📖 一起学习 &…...
Oracle AI Vector Search
Oracle AI Vector Search 是 Oracle Database 23ai 中引入的一项新技术,它允许用户在数据库中直接存储和高效查询向量数据。这项技术旨在简化应用程序的开发,并且支持不同维度和格式的向量。以下是 Oracle AI Vector Search 的一些关键特性和优势&#x…...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...
C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
基于 TAPD 进行项目管理
起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...
安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲
文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...
Python Ovito统计金刚石结构数量
大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...
代码规范和架构【立芯理论一】(2025.06.08)
1、代码规范的目标 代码简洁精炼、美观,可持续性好高效率高复用,可移植性好高内聚,低耦合没有冗余规范性,代码有规可循,可以看出自己当时的思考过程特殊排版,特殊语法,特殊指令,必须…...
NPOI操作EXCEL文件 ——CAD C# 二次开发
缺点:dll.版本容易加载错误。CAD加载插件时,没有加载所有类库。插件运行过程中用到某个类库,会从CAD的安装目录找,找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库,就用插件程序加载进…...
