当前位置: 首页 > news >正文

WPF学习笔记(20)Button与控件模板

Button与控件模板

  • 一、 Button默认控件模板详解
  • 二、自定义按钮模板


一、 Button默认控件模板详解

WPF 中的大多数控件都有默认的控件模板
这些模板定义了控件的默认外观和行为,包括控件的布局、背景、前景、边框、内容等。
在这里插入图片描述
官方文档:https://learn.microsoft.com/zh-cn/dotnet/desktop/wpf/controls/button-styles-and-templates
在工具箱拖入Button控件,鼠标右键→编辑模板→编辑副本
在这里插入图片描述
下面为Button控件默认模板的内容
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以更改模板来定制按钮的一些显示,比如改变鼠标悬浮和按钮移上去之后的背景色:在这里插入图片描述

二、自定义按钮模板

官方文档:https://learn.microsoft.com/zh-cn/dotnet/desktop/wpf/controls/how-to-create-apply-template
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
示例代码定义圆形按钮与运行效果如下:

<Window.Resources> <!--自定义示例--><Style TargetType="Button"><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="Button"><Grid><Ellipse x:Name="ell" Fill="{TemplateBinding Background}"Stroke="Purple"StrokeThickness="{Binding RelativeSource={RelativeSource TemplatedParent},Path=BorderThickness.Top}"/><ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center"/></Grid><ControlTemplate.Triggers><Trigger Property="IsMouseOver" Value="True"><Setter TargetName="ell" Property="Fill" Value="#FFB0E60D"/><Setter TargetName="ell" Property="Stroke" Value="Yellow"/></Trigger><Trigger Property="IsPressed" Value="True"><Setter TargetName="ell" Property="Fill" Value="Cyan"/><Setter TargetName="ell" Property="Stroke" Value="Gold"/></Trigger></ControlTemplate.Triggers></ControlTemplate></Setter.Value></Setter></Style>
<Window.Resources>    <Grid><Button x:Name="button1" Content="圆形按钮"  Foreground="Yellow" FontSize="20" Width="200" Height="200" BorderBrush="Blue" BorderThickness="20" Background="Black" Margin="186,17,414,218"/><Button x:Name="button2" Content="椭圆按钮" Width="200" Height="100" Background="Cyan" Margin="186,295,414,40"/></Grid>

官方案例:

    <Window.Resources><ControlTemplate x:Key="BeautUI" TargetType="Button"><Grid><Ellipse x:Name="ell"><Ellipse.Fill><LinearGradientBrush StartPoint="0,0" EndPoint="0,1"><GradientStop Offset="0" Color="blue"/><GradientStop Offset="1" Color="LightBlue"/></LinearGradientBrush></Ellipse.Fill></Ellipse><Ellipse Margin="20"><Ellipse.Fill><LinearGradientBrush StartPoint="0,0" EndPoint="0,1"><GradientStop Offset="0" Color="White"/><GradientStop Offset="1" Color="Transparent"/></LinearGradientBrush></Ellipse.Fill></Ellipse><ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" /></Grid><ControlTemplate.Triggers><Trigger Property="IsMouseOver" Value="true"><Setter TargetName="ell" Property="Fill" Value="Red"/></Trigger><Trigger Property="IsPressed" Value="true"><Setter TargetName="ell" Property="Fill" Value="Orange"/></Trigger></ControlTemplate.Triggers></ControlTemplate></Window.Resources><Grid><Button x:Name="button3" Content="漂亮按钮" Template="{StaticResource BeautUI}" Width="200" Height="200" Background="Cyan" Margin="462,117,138,118"/></Grid>

在这里插入图片描述
定义圆角按钮示例代码,可用于制作计算器如下:

            <Button.Template><ControlTemplate TargetType="Button"><Border CornerRadius="8" Background ="{TemplateBinding Background}"><ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/></Border></ControlTemplate></Button.Template>

在这里插入图片描述

http://www.lqws.cn/news/605917.html

相关文章:

  • 从模型部署到AI平台:云原生环境下的大模型平台化演进路径
  • 如快 Sofast:自定义快捷键 剪贴板智能管家快速查找搜索提升办公效率
  • 全面的 Spring Boot 整合 RabbitMQ 的 `application.yml` 配置示例
  • HarmonyOS学习记录2
  • Linux平台MinGW32/MinGW64交叉编译完全指南:原理、部署与组件详解
  • 计算机网络(五)数据链路层 MAC和ARP协议
  • RuoYi框架低代码特性
  • 医学+AI教育实践!南医大探索数据挖掘人才培养,清华指导发布AI教育白皮书
  • Java项目:基于SSM框架实现的软件工程项目管理系统【ssm+B/S架构+源码+数据库+毕业论文+开题报告】
  • python: 字符串编码和解码
  • CAN转Modbus TCP网关赋能食品搅拌机智能协同控制
  • 支持向量机(SVM)在脑部MRI分类中的深入应用与实现
  • Django全栈开发:架构解析与性能优化实战
  • 基于开源链动2+1模式AI智能名片S2B2C商城小程序的场景零售创新研究
  • 【算法】动态规划 矩阵:120. 三角形最小路径和
  • 达梦数据库linux安装
  • 飞算 JavaAI 智控引擎:全链路开发自动化新图景
  • 自动化Docker容器化安装与配置工具介绍
  • 7月2日星期三今日早报简报微语报早读
  • Intellij IDEA 2023的下载和安装
  • Servlet开发流程(包含IntelliJ IDEA项目添加Tomcat依赖的详细教程)
  • 【技术前沿:飞算JavaAI如何用AI引擎颠覆传统Java开发模式】
  • 香港券商交易系统开发与解决方案全景报告:云原生、跨境协同与高性能架构的创新实践
  • 开源计算机视觉的基石:OpenCV 全方位解析
  • 解决 npm install canvas@2.11.2 失败的问题
  • 【公司环境下发布个人NPM包完整教程】
  • 算法笔记上机训练实战指南刷题
  • vue-36(为组件编写单元测试:属性、事件和方法)
  • Docker Dify安装 完整版本
  • 客服机器人知识库怎么搭?智能客服机器人3种方案深度对比(含零售落地案例)