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

server/2025/2/7 15:55:34/

目录

  • 前言
  • 一、
    • 解析
      • 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/server/165703.html

相关文章

如何安装PHP依赖库 更新2025.2.3

要在PHP项目中安装依赖&#xff0c;首先需要确保你的系统已经安装了Composer。Composer是PHP的依赖管理工具&#xff0c;它允许你声明项目所需的库&#xff0c;并管理它们。以下是如何安装Composer和在PHP项目中安装依赖的步骤&#xff1a; 一. 安装Composer 对于Windows用户…

支持 APQP (先期产品质量策划) 的软件系统-汽车电子行业专用研发管理信息化平台

支持 APQP (先期产品质量策划) 的软件系统 在制造业竞争白热化的当下&#xff0c;产品质量已然成为企业立足市场的核心竞争力。APQP&#xff08;先期产品质量策划&#xff09;作为保障产品质量的关键流程&#xff0c;贯穿于产品从概念萌生到最终交付的整个生命周期&#xff0c…

SQL入门到精通 理论+实战 -- 在 MySQL 中学习SQL语言

目录 一、环境准备 1、MySQL 8.0 和 Navicat 下载安装 2、准备好的表和数据文件&#xff1a; 二、SQL语言简述 1、数据库基础概念 2、什么是SQL 3、SQL的分类 4、SQL通用语法 三、DDL&#xff08;Data Definition Language&#xff09;&#xff1a;数据定义语言 1、操…

android状态栏样式修改(1)

设置状态栏背景效果 package com.cy.translucentparent; import android.app.Activity; import android.os.Build; import android.view.View; import android.view.Window; import android.view.WindowManager; /** Created by lenovo on 2017/4/25. */ public clas…

MySQL----case的用法

在 MySQL 中&#xff0c;CASE 表达式是一个用于条件判断的功能&#xff0c;可以根据不同的条件返回不同的结果。CASE 表达式通常用于 SELECT 查询语句中&#xff0c;可以在 SQL 中灵活地进行条件判断和数据转换。CASE 有两种基本的语法形式&#xff1a; 简单 CASE 表达式&…

【分布式架构理论3】分布式调用(2):API 网关分析

文章目录 一、API 网关的作用1. 业务层面&#xff1a;简化调用复杂性2. 系统层面&#xff1a;屏蔽客户端调用差异3. 其他方面&#xff1a; 二、API 网关的技术原理1. 协议转换2. 链式处理3. 异步请求机制1. Zuul1&#xff1a;同步阻塞处理2. Zuul2&#xff1a;异步非阻塞处理 三…

毕业设计:基于卷积神经网络的鲜花花卉种类检测算法研究

目录 前言 课题背景和意义 实现技术思路 一、算法理论基础 1.1 卷积神经网络 1.2目标检测算法 二、 数据集 2.1 数据集 2.2 数据扩充 三、实验及结果分析 3.1 实验环境搭建 3.2 模型训练 最后 前言 &#x1f4c5;大四是整个大学期间最忙碌的时光,一边要忙着备考或…

用C编程语言实现经典算法:从理论到实践

文章目录 引言一、快速排序算法实现与优化1.1 算法原理1.2 基础实现1.3 优化策略1.3.1 三数取中法1.3.2 尾递归优化1.4 性能对比二、Dijkstra最短路径算法2.1 算法原理2.2 C语言实现2.3 优先队列优化三、0-1背包动态规划3.1 算法思想3.2 C语言实现3.3 空间优化(滚动数组)四、…