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

个人账号密码网站建设邵阳网站建设网站

个人账号密码网站建设,邵阳网站建设网站,顺德做网站shundeit,县建设局 协会网站需求: ①做一个带有圆角的Button,宽300高100,内容是custom_btn,背景颜色为青色,最外边是红色且线宽8; ②鼠标移动到按钮上(IsMouseOver),字体放大为50且背景颜色变为紫色…

需求:
①做一个带有圆角的Button,宽300高100,内容是custom_btn,背景颜色为青色,最外边是红色且线宽8;
②鼠标移动到按钮上(IsMouseOver),字体放大为50且背景颜色变为紫色(#800080)
③鼠标点击按钮(IsPressed),背景颜色变为橙色(#ffb100)

一、新建项目

新建一个窗口,例如:
在这里插入图片描述
在这里插入图片描述
在App.xaml中设置该页面为启动页面
在这里插入图片描述

二、绘制button

①做一个带有圆角的Button,宽300高100,内容是custom_btn,背景颜色为青色,最外边是红色且线宽8;

Ⅰ,布置外观

宽300 Width="300"
高100 Height="100"
内容是custom_btn Content="custom_btn"
背景颜色为青色 Background="Cyan"
最外边是红色且线宽8 BorderBrush="Red" BorderThickness="8"

<Button Width="300" Height="100" Content="custom_btn" Background="Cyan" BorderBrush="Red" BorderThickness="8" ></Button>

在这里插入图片描述

Ⅱ,设置模板

按钮模板:我们要做一个button的模板,需要使用Button.Template属性重新定义按钮的视觉外观,再通过ControlTemplate指定模板应用于Button类型
当我们写到这里的时候,系统知道我们要重新自定义button了,所有的button原先的样式全部消失

<Button Width="300" Height="100"  Background="Cyan" BorderBrush="Red" BorderThickness="8" ><Button.Template><ControlTemplate TargetType="{x:Type Button}"></ControlTemplate></Button.Template>
</Button>

在这里插入图片描述

Ⅲ,使用Border控件显示圆角

边框元素:因为需求是一个带有圆角的button,故Border元素作为按钮的视觉根元素,CornerRadius="50"使边框变为椭圆形
使用TemplateBinding将模板属性绑定到按钮的实际属性

Border起个名称x:Name="border",后续触发需要用到

<Button Width="300" Height="100"  Background="Cyan" BorderBrush="Red" BorderThickness="8" ><Button.Template><ControlTemplate TargetType="{x:Type Button}"><Border x:Name="border" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="50"></Border></ControlTemplate></Button.Template>
</Button>

在这里插入图片描述

Ⅳ,通过显示内容

方法一:通过ContentPresenter 使用原本的的Button的属性
但是该方法很局限,没办法再次自定义

<Button Width="300" Height="100" Content="custom_btn" Background="Cyan" BorderBrush="Red" BorderThickness="8" Click="Button_Click" ><Button.Template><ControlTemplate TargetType="{x:Type Button}"><Border x:Name="border" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="50"><ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/></Border></ControlTemplate></Button.Template>
</Button>

在这里插入图片描述

方法二:使用TextBlock控件显示内容(推荐)
TextBlock控件起个名称x:Name="txtContent",后续触发需要用到

<Button Width="300" Height="100" Content="custom_btn" Background="Cyan" BorderBrush="Red" BorderThickness="8" Click="Button_Click" ><Button.Template><ControlTemplate TargetType="{x:Type Button}"><Border x:Name="border" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="50"><TextBlock x:Name="txtContent" Text="{TemplateBinding Content}" HorizontalAlignment="Center" VerticalAlignment="Center"/></Border></ControlTemplate></Button.Template>
</Button>

在这里插入图片描述

三、鼠标移动事件触发

②鼠标移动到按钮上(IsMouseOver),字体放大为50且背景颜色变为紫色(#800080)

通过ontrolTemplate.TriggersTrigger进行绑定事件
<Trigger Property="IsMouseOver" Value="True">鼠标是否移动在该控件上,True表示在,False表示不在
<Setter TargetName="border" Property="Background" Value="#800080"/>设置背景颜色
<Setter TargetName="txtContent" Property="FontSize" Value="50"/>设置字体

<Button Width="300" Height="100" Content="custom_btn" Background="Cyan" BorderBrush="Red" BorderThickness="8" ><Button.Template><ControlTemplate TargetType="{x:Type Button}"><Border x:Name="border" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="50"><TextBlock x:Name="txtContent" Text="{TemplateBinding Content}" HorizontalAlignment="Center" VerticalAlignment="Center"/></Border><ControlTemplate.Triggers><Trigger Property="IsMouseOver" Value="True"><Setter TargetName="border" Property="Background" Value="#800080"/><Setter TargetName="txtContent" Property="FontSize" Value="50"/></Trigger></ControlTemplate.Triggers></ControlTemplate></Button.Template>
</Button>

四、鼠标点击事件触发

③鼠标点击按钮(IsPressed),背景颜色变为橙色(#ffb100)

同理,<Trigger Property="IsPressed" Value="True">控件是否按下,True表示按下,False表示未按下
<Setter TargetName="border" Property="Background" Value="#ffb100"/>设置背景颜色

<Button Width="300" Height="100" Content="custom_btn" Background="Cyan" BorderBrush="Red" BorderThickness="8" ><Button.Template><ControlTemplate TargetType="{x:Type Button}"><Border x:Name="border" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="50"><TextBlock x:Name="txtContent" Text="{TemplateBinding Content}" HorizontalAlignment="Center" VerticalAlignment="Center"/></Border><ControlTemplate.Triggers><Trigger Property="IsMouseOver" Value="True"><Setter TargetName="border" Property="Background" Value="#800080"/><Setter TargetName="txtContent" Property="FontSize" Value="50"/></Trigger><Trigger Property="IsPressed" Value="True"><Setter TargetName="border" Property="Background" Value="#ffb100"/></Trigger></ControlTemplate.Triggers></ControlTemplate></Button.Template>
</Button>

五、完整代码

<Window x:Class="WpfApp1.custom_button"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:WpfApp1"mc:Ignorable="d"Title="custom_button" Height="450" Width="800"><Grid><Button Width="300" Height="100" Content="custom_btn" Background="Cyan" BorderBrush="Red" BorderThickness="8" Click="Button_Click" ><Button.Template><ControlTemplate TargetType="{x:Type Button}"><Border x:Name="border" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="50"><TextBlock x:Name="txtContent" Text="{TemplateBinding Content}" HorizontalAlignment="Center" VerticalAlignment="Center"/></Border><ControlTemplate.Triggers><Trigger Property="IsMouseOver" Value="True"><Setter TargetName="border" Property="Background" Value="Purple"/><Setter TargetName="txtContent" Property="FontSize" Value="50"/></Trigger><Trigger Property="IsPressed" Value="True"><Setter TargetName="border" Property="Background" Value="#ffb100"/></Trigger></ControlTemplate.Triggers></ControlTemplate></Button.Template></Button></Grid>
</Window>

六、效果展示

自定义Button
在这里插入图片描述
鼠标移动
在这里插入图片描述
鼠标点击
在这里插入图片描述

七、总结

1. Button元素属性

  • Width=“300” - 设置按钮宽度为300设备无关单位
  • Height=“100” - 设置按钮高度为100设备无关单位
  • Content=“custom_btn” - 设置按钮显示的文本内容
  • Background=“Cyan” - 设置按钮背景颜色为青色
  • BorderBrush=“Red” - 设置按钮边框颜色为红色
  • BorderThickness=“8” - 设置按钮边框厚度为8单位

2. Button.Template元素

  • 定义按钮的视觉模板,完全重写按钮的默认外观

3. ControlTemplate元素

  • TargetType=“{x:Type Button}” - 指定此模板应用于Button类型的控件

4. Border元素

  • x:Name=“border” - 为边框元素命名,便于在触发器中引用
  • Background=“{TemplateBinding Background}” - 将边框背景绑定到按钮的Background属性
  • BorderBrush=“{TemplateBinding BorderBrush}” - 将边框颜色绑定到按钮的BorderBrush属性
  • BorderThickness=“{TemplateBinding BorderThickness}” - 将边框厚度绑定到按钮的BorderThickness属性
  • CornerRadius=“50” - 设置边框圆角半径为50,使按钮呈现椭圆形外观

5. TextBlock元素

  • x:Name=“txtContent” - 为文本元素命名,便于在触发器中引用
  • Text=“{TemplateBinding Content}” - 将文本内容绑定到按钮的Content属性
  • HorizontalAlignment=“Center” - 文本水平居中对齐
  • VerticalAlignment=“Center” - 文本垂直居中对齐

6. ControlTemplate.Triggers元素

  • 包含模板的触发器集合,用于定义按钮在不同状态下的视觉变化

7. Trigger元素 (IsMouseOver)

  • Property=“IsMouseOver” - 监听IsMouseOver属性变化
  • Value=“True” - 当属性值为True时激活触发器
  • 内部Setter元素:
    • TargetName=“border” - 指定要修改的元素名为"border"
    • Property=“Background” - 要修改的属性是Background
    • Value=“#800080” - 将背景色设置为深紫色(#800080)
    • TargetName=“txtContent” - 指定要修改的元素名为"txtContent"
    • Property=“FontSize” - 要修改的属性是FontSize
    • Value=“50” - 将字体大小设置为50

8. Trigger元素 (IsPressed)

  • Property=“IsPressed” - 监听IsPressed属性变化
  • Value=“True” - 当属性值为True时激活触发器
  • 内部Setter元素:
    • TargetName=“border” - 指定要修改的元素名为"border"
    • Property=“Background” - 要修改的属性是Background
    • Value=“#ffb100” - 将背景色设置为橙色(#ffb100)

功能总结

这个自定义按钮模板实现了以下功能:

  1. 创建了一个椭圆形按钮(通过CornerRadius=“50”)
  2. 保持了与原始按钮属性的绑定(使用TemplateBinding)
  3. 添加了鼠标悬停效果:背景变紫色,文字变大
  4. 添加了按下效果:背景变橙色

这种自定义模板的方式允许开发者完全控制按钮的外观,同时保留按钮的所有功能和行为。

http://www.dtcms.com/a/564242.html

相关文章:

  • 荆门网站建设公司个人网页制作成品 模板
  • 建设网站网址是多少四川十大设计院
  • 公司的网站如何建设国家反诈中心app下载流程
  • 深圳营销网站建设公司排名沐风 wordpress 主题
  • 720全景网站怎么做网站栏目结构图模板
  • 如何做网站经营性备案杭州萧山区专门做网站的公司
  • 百色建设网站网络推广有哪几种方法
  • 办公用品十大购物网站排名企业网站导航下拉菜单怎么做
  • 北京网站开发工程师哪个网站可以做破案h5
  • 吉林省建设集团网站网络整合营销理论
  • 刷题网站开发怎么做百度网站验证
  • 巩义做网站优化wordpress 同步公众号
  • 做网站都需要什么资料dw中怎样做网站链接
  • 电脑公司网站管理系统济宁祥云网站建设
  • 河南省住房城乡和建设厅网站建材城电商网站建设
  • 网站建设亿金手指科杰织梦培训机构网站模板
  • 外贸品牌网站建设龙岗外贸网站制作
  • 物流公司做网站注重什么问题微信营销策略
  • 官网的网站建设公司百度贴吧网页版登录
  • 代做网站多少钱深圳住房和建设局网站网上预约
  • 网站开发类标书报价明细表东莞网络优化哪家好
  • 网站建设广州天河区wordpress4.8移动
  • 做企业网站用drupal7模板建网站怎么做seo
  • 北京做网站的工作室网页设计制作教程:一个页面的完全制作
  • 在c盘做网站可以吗织梦手机网站分亨链接怎么做
  • 网站蓝色和红色搭配建设网站怎么设置网站页面大小
  • 中小企业 网站建设做英文网站多钱
  • 自己做充值网站浙江华企做网站
  • 网站策划运营wordpress国内主题
  • dede图片网站模板专项培训网站建设方案