记录 | WPF基础学习自定义按钮

embedded/2025/2/10 21:53:10/

目录

  • 前言
  • 一、
    • 解析
      • Button.Template
      • Border和TemplateBinding
  • 二、代码提供
  • 更新时间


前言

参考文章:
参考视频:【WPF入门教程 Visual Studio 2022】WPF界面开发入门

自己的感想
这里涉及到Template模板和事件。主要干两件事:1、template中的重写原button;2、添加鼠标悬浮和鼠标点击事件。


一、

在这里插入图片描述

<Window x:Class="WPF_Study.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:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:WPF_Study"mc:Ignorable="d"Title="WPF入门.txt" Height="600" Width="800"><Grid><Button Width="300" Height="100" Content="自定义按钮" Background="Green" FontSize="50" Foreground="White"><!--自定义Button--><Button.Template><ControlTemplate TargetType="Button"><Border x:Name="border" Background="{TemplateBinding Background}" BorderBrush="Black" BorderThickness="4" CornerRadius="10" HorizontalAlignment="Center" VerticalAlignment="Center"><TextBlock x:Name="txtContent" Text="{TemplateBinding Content}"/></Border><!--自定义触发器--><ControlTemplate.Triggers><Trigger Property="IsMouseOver" Value="True"><Setter TargetName="border" Property="Background" Value="red"/></Trigger><Trigger Property="IsPressed" Value="true"><Setter TargetName="txtContent" Property="TextBlock.Text" Value="已经点击"/></Trigger></ControlTemplate.Triggers></ControlTemplate></Button.Template></Button></Grid></Window>

解析

Button.Template

Button.Template:通过 ControlTemplate 完全覆盖按钮的默认外观。

<Grid><Button Width="300" Height="100" Content="自定义按钮" Background="Green" FontSize="50" Foreground="White"><!--自定义Button--><Button.Template><ControlTemplate TargetType="Button"><!-- 按钮模板内容 --></ControlTemplate></Button.Template></Button>
</Grid>

Border和TemplateBinding

使用 Border 作为按钮容器,设置圆角、黑色边框。

内部通过 TextBlock 显示按钮内容(Content 属性)。

TemplateBinding:将按钮的 Background 和 Content 属性动态绑定到模板元素。

二、代码提供

点击下载


更新时间

  • 2025-02-06:创建。

http://www.ppmy.cn/embedded/161175.html

相关文章

ubuntu server环境下使用mitmproxy代理

近日为了调试AWS连接的一个问题&#xff0c;需要查看HTTPS报文的内容&#xff0c;通过抓包的方式也可以。这里介绍通过mitmproxy的方式。因为是server环境&#xff0c;没有桌面&#xff0c;因此配置的过程是基于shell终端完成的。 安装mitmproxy sudo pip3 install mitmproxy…

周报1.0

补题补题(///&#xffe3;皿&#xffe3;)○&#xff5e; 牛客1(4):ABDG E:双生双宿之错: 小红定义一个数组是“双生数组”&#xff0c;当且仅当该数组大小为偶数&#xff0c;数组的元素种类恰好为 2种&#xff0c;且这两种元素的出现次数相同。例如{1,1,4,4,1,4} 是双生数组…

百度的冰桶算法

百度的冰桶算法&#xff08;Ice Bucket Algorithm&#xff09;是百度搜索引擎用于打击低质量内容的一种算法。该算法主要针对那些通过大量堆砌关键词、内容质量低下、用户体验差的网页进行惩罚&#xff0c;从而提升搜索结果的质量。 冰桶算法的核心目标&#xff1a; 打击低质…

使用PyCharm进行Django项目开发环境搭建

如果在PyCharm中创建Django项目 1. 打开PyCharm&#xff0c;选择新建项目 2.左侧选择Django&#xff0c;并设置项目名称 3.查看项目解释器初始配置 4.新建应用程序 执行以下操作之一&#xff1a; 转到工具| 运行manage.py任务或按CtrlAltR 在打开的manage.pystartapp控制台…

大模型Prompt 提示词攻击,大语言模型安全的潜在威胁

一、简介 Prompt 提示词作为人和大语言模型交互的媒介&#xff0c;被不断提起。提示词攻击是一种新型的攻击方式&#xff0c;包括提示词注入、提示词泄露和提示词越狱。这些攻击方式可能会导致模型生成不适当的内容&#xff0c;泄露敏感信息等。Prompt的构建使得预训练大模型能…

3步打造C# API安全密盾

引言&#xff1a;API 安全的重要性 在数字化浪潮中&#xff0c;应用程序编程接口&#xff08;API&#xff09;已成为不同软件系统之间通信和数据交互的关键桥梁。无论是企业内部的微服务架构&#xff0c;还是面向外部用户的在线服务&#xff0c;API 都承担着数据传输和业务逻辑…

【后端开发】系统设计101——Devops,Git与CICD,云服务与云原生,Linux,安全性,案例研究(30张图详解)

【后端开发】系统设计101——Devops&#xff0c;Git与CICD&#xff0c;云服务与云原生&#xff0c;Linux&#xff0c;安全性&#xff0c;案例研究&#xff08;30张图详解&#xff09; 文章目录 1、DevopsDevOps与SRE与平台工程的区别是什么&#xff1f;什么是k8s&#xff08;Ku…

graylog初体验

最近graylog比较火&#xff0c;部署了一个来测试下&#xff0c;看下后续能不能代替目前占用资源比较多的elk&#xff0c;目前未对graylog性能进行深入测试&#xff0c;只是简单体验了下&#xff0c;graylog的UI比较简陋&#xff0c;但是在报警以及权限方面优于ELK&#xff0c;整…