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

WPF学习(3) -- 控件模板

一、操作过程

二、代码

<Window x:Class="学习.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:学习"mc:Ignorable="d"Title="MainWindow" Height="450" Width="800"><Window.Resources><Style x:Key="FocusVisual"><Setter Property="Control.Template"><Setter.Value><ControlTemplate><Rectangle Margin="2" StrokeDashArray="1 2" Stroke="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" SnapsToDevicePixels="true" StrokeThickness="1"/></ControlTemplate></Setter.Value></Setter></Style><SolidColorBrush x:Key="Button.Static.Background" Color="#FFDDDDDD"/><SolidColorBrush x:Key="Button.Static.Border" Color="#FF707070"/><SolidColorBrush x:Key="Button.MouseOver.Background" Color="#FFBEE6FD"/><SolidColorBrush x:Key="Button.MouseOver.Border" Color="#FF3C7FB1"/><SolidColorBrush x:Key="Button.Pressed.Background" Color="#FFC4E5F6"/><SolidColorBrush x:Key="Button.Pressed.Border" Color="#FF2C628B"/><SolidColorBrush x:Key="Button.Disabled.Background" Color="#FFF4F4F4"/><SolidColorBrush x:Key="Button.Disabled.Border" Color="#FFADB2B5"/><SolidColorBrush x:Key="Button.Disabled.Foreground" Color="#FF838383"/><Style x:Key="ButtonStyle1" TargetType="{x:Type Button}"><Setter Property="FocusVisualStyle" Value="{StaticResource FocusVisual}"/><Setter Property="Background" Value="{StaticResource Button.Static.Background}"/><Setter Property="BorderBrush" Value="{StaticResource Button.Static.Border}"/><Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/><Setter Property="BorderThickness" Value="1"/><Setter Property="HorizontalContentAlignment" Value="Center"/><Setter Property="VerticalContentAlignment" Value="Center"/><Setter Property="Padding" Value="1"/><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="{x:Type Button}"><Border x:Name="border" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" SnapsToDevicePixels="true"><ContentPresenter x:Name="contentPresenter" Focusable="False" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/></Border><ControlTemplate.Triggers><Trigger Property="IsDefaulted" Value="true"><Setter Property="BorderBrush" TargetName="border" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/></Trigger><Trigger Property="IsMouseOver" Value="true"><Setter Property="Background" TargetName="border" Value="{StaticResource Button.MouseOver.Background}"/><Setter Property="BorderBrush" TargetName="border" Value="{StaticResource Button.MouseOver.Border}"/></Trigger><Trigger Property="IsPressed" Value="true"><Setter Property="Background" TargetName="border" Value="{StaticResource Button.Pressed.Background}"/><Setter Property="BorderBrush" TargetName="border" Value="{StaticResource Button.Pressed.Border}"/></Trigger><Trigger Property="IsEnabled" Value="false"><Setter Property="Background" TargetName="border" Value="{StaticResource Button.Disabled.Background}"/><Setter Property="BorderBrush" TargetName="border" Value="{StaticResource Button.Disabled.Border}"/><Setter Property="TextElement.Foreground" TargetName="contentPresenter" Value="{StaticResource Button.Disabled.Foreground}"/></Trigger></ControlTemplate.Triggers></ControlTemplate></Setter.Value></Setter></Style></Window.Resources><Grid><StackPanel><Button Style="{DynamicResource ButtonStyle1}" ><StackPanel Orientation="Horizontal"><Button Content="1"/><Button Content="2"/><Button Content="3"/></StackPanel></Button></StackPanel></Grid>
</Window>

三、代码结果

四、总结

通过引用微软库中的Buttton样式代码,可以自定义改变控件的样式,主要是通过改变如下部分。

<ContentPresenter x:Name="contentPresenter"Focusable="False" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>

五、热重载工具

在调试窗口界面上方就可以实现很方便的调试功能。

http://www.lryc.cn/news/399322.html

相关文章:

  • Netty Websocket SpringBoot Starter
  • 数据结构(4.2)——朴素模式匹配算法
  • git切换远程仓库地址
  • 同步与异步:.NET 中的 Task.WaitAll 和 Task.WhenAll
  • 在Linux系统实现瑞芯微RK3588部署rknntoolkit2进行模型转换
  • 【人工智能】Transformers之Pipeline(概述):30w+大模型极简应用
  • Jenkins中Node节点与构建任务
  • Leetcode3200. 三角形的最大高度
  • docker运行nginx挂载前端html页面步骤
  • kafka部署以及常用命令详细总结
  • 代码随想录算法训练营第29天|LeetCode 134. 加油站、135. 分发糖果、860.柠檬水找零、406.根据身高重建队列
  • 代理模式(大话设计模式)C/C++版本
  • 本人学习保存-macOS打开Navicat提示「“Navicat Premium”已损坏,无法打开。 你应该将它移到废纸篓。」的解决方法
  • 《Cross-Image Pixel Contrasting for Semantic Segmentation》论文解读
  • 技术周总结 2024.07.08~07.14(算法,Python,Java,Scala,PHP)
  • UnityECS学习中问题及总结entityQuery.ToComponentDataArray和entityQuery.ToEntityArray区别
  • [python]基于yolov10+gradio目标检测演示系统设计
  • 浏览器开发者视角及CSS表达式选择元素
  • GuLi商城-商品服务-API-品牌管理-统一异常处理
  • VUE+Spring Flux实现SSE长连接
  • C#实现Winform程序右下角弹窗消息提示
  • Java三剑客:封装、继承、多态的魔法世界
  • 0145__Linux的capability
  • # Redis 入门到精通(一)数据类型(4)
  • 西邮计科嵌入式复习
  • Java如何使用 HttpClientUtils 发起 HTTP 请求
  • 无人机的工作原理
  • 敏捷开发笔记(第10章节)--Liskov原则(LSP)
  • 基于SSM的校园一卡通管理系统的设计与实现
  • 新版Android Studio中设置gradle的JDK版本