news 2026/4/27 1:09:00

WPF样式学习笔记

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
WPF样式学习笔记

以前写界面时,经常给每个按钮单独设置颜色、大小、字体,不仅代码重复,而且后期修改很麻烦。WPF 提供的样式机制很好地解决了这个问题。样式的核心思想就是:统一设置、重复使用、方便维护。

一、什么是样式(Style)

WPF 中的样式,本质上就是把一组属性值打包起来,然后应用到多个控件上。
例如:
按钮宽度统一 100
高度统一 50
字体统一 20
背景色统一绿色
如果没有样式,每个按钮都要写一遍属性。
如果使用样式,只写一次,多个按钮共享。

二、为什么要学样式

如果项目里有很多按钮:

<Button Width="100" Height="50" Background="Green"/> <Button Width="100" Height="50" Background="Green"/> <Button Width="100" Height="50" Background="Green"/>

这种写法会出现几个问题:
1. 重复代码太多
多个控件属性一样,却写很多遍。
2. 后期修改麻烦
比如按钮宽度改成120,需要一个个修改。
3. 风格不统一
团队开发时,每个人写法不同,界面容易混乱。

所以使用样式后:

<Style TargetType="Button">

所有 Button 自动统一风格。

三、Style 的核心组成

样式类叫: Style
最重要几个成员:

属性作用
TargetType作用于哪个控件
Setters设置属性值
Triggers触发器
BasedOn继承其他样式
Resources资源

四、最基础样式写法(统一按钮风格)

<Window.Resources> <Style TargetType="Button"> <Setter Property="Width" Value="100"/> <Setter Property="Height" Value="50"/> <Setter Property="FontSize" Value="20"/> <Setter Property="Background" Value="Green"/> </Style> </Window.Resources>

然后按钮直接写:

<Button Content="登录"/> <Button Content="退出"/>

所有按钮自动应用样式。

五、x:Key 命名样式(按需使用)

如果不希望所有按钮都一样,就给样式起名字:

<Style x:Key="LoginStyle" TargetType="Button">

使用时:

<Button Style="{StaticResource LoginStyle}"/>

这样只有引用它的按钮才生效。

六、StaticResource 和 DynamicResource 区别

1. StaticResource(静态资源)

程序启动时就确定资源。
效率高,最常用。

Style="{StaticResource LoginStyle}"

2. DynamicResource(动态资源)

运行时再查找资源。
适合主题切换、动态换肤。

Background="{DynamicResource MainColor}"

我的理解:
静态资源 = 提前准备好
动态资源 = 用的时候再找

七、样式继承(BasedOn)

如果很多按钮只有颜色不同,其余属性一样,就可以继承。

<Style x:Key="BaseButtonStyle" TargetType="Button"> <Setter Property="Width" Value="100"/> <Setter Property="Height" Value="50"/> </Style> <Style x:Key="RedButtonStyle" TargetType="Button" BasedOn="{StaticResource BaseButtonStyle}"> <Setter Property="Background" Value="Red"/> </Style>

这就像 C# 类继承,减少重复代码,非常重要。

八、样式可以写在哪些位置

1. 写在控件内部

只对当前控件有效,适合临时使用。

2. 写在 Window.Resources

当前窗口所有控件可用,适合单页面项目。

3. 写在 App.xaml

全项目通用,适合正式项目。

4. 写在资源字典文件

九、资源字典 ResourceDictionary

WPF 所有资源都能放进字典里,例如:
Style
Brush(画笔)
Template(模板)
字体
颜色

加载方式:

<ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="/ButtonDictionary.xaml"/> </ResourceDictionary.MergedDictionaries>

我的理解:资源字典 = 专门存放公共资源的仓库。

十、触发器 Trigger

触发器作用:
当满足某个条件时,自动改变控件样式。

比如:
鼠标移入按钮变色
点击按钮缩小
文本框为空时边框变红

最常用 Trigger

<Style.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="Background" Value="Orange"/> </Trigger> </Style.Triggers>

我的理解:
Trigger 就像自动响应器:
如果发生某条件
那么执行某效果

十一、常见触发器类型(了解)

类型作用
Trigger属性变化触发
MultiTrigger多条件触发
DataTrigger数据触发
MultiDataTrigger多数据触发
EventTrigger事件触发

十二、Setter 本质理解

Setter 是样式里的单条设置:

<Setter Property="Width" Value="100"/>

意思是:把 Width 设置为 100
多个 Setter 组合起来形成完整样式。

十三、总结

WPF 样式是 UI 开发最核心内容之一。

它优势非常明显:
1. 代码更少
2. 修改方便
3. 页面统一美观
4. 企业项目规范

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/27 0:51:49

随着AI的使用我越来越发现AI是一个只能辅助我工作的工具

AI不理解逻辑AI无法解决最近出现的问题AI无法解决复杂问题这是今后所有公司发展的方向-----------不遵守的只有倒闭的命运&#xff0c;当然了违法的事情肯定不在计算范围&#xff0c;你直接去抢劫...................你直接贪污...................你直接骗...................…

作者头像 李华
网站建设 2026/4/27 0:51:08

python threading

# Python concurrent.futures&#xff1a;一个被低估的并发神器 从我多年的Python开发经验来看&#xff0c;concurrent.futures是标准库中最容易被忽视的模块之一。很多人一提到并发就想到asyncio或者multiprocessing&#xff0c;却忘了这个封装得恰到好处的工具。 它到底是什么…

作者头像 李华
网站建设 2026/4/27 0:36:28

C++程序简单示例

前言&#xff1a;很多小伙伴反应想要用C刷LeetCode&#xff0c;但是对于C语法不熟悉&#xff0c;对于很多算法和数据结构也不够了解。这就导致了刷题的时候需要四处查询资料&#xff0c;非常的麻烦。我们先来看一段C的示例代码&#xff1a;1234567// my first cpp file#include…

作者头像 李华
网站建设 2026/4/27 0:35:20

AI日志分析系统:多代理自修正RAG架构解析与实践

1. 日志分析系统的现状与挑战现代软件系统产生的日志数据正以惊人的速度增长。根据2023年DevOps状态报告&#xff0c;大型互联网公司每天产生的日志量普遍超过1TB&#xff0c;而传统金融系统的日志量也达到了数百GB级别。这些日志包含了系统运行状态、错误信息、性能指标等关键…

作者头像 李华
网站建设 2026/4/27 0:32:29

5分钟掌握Mermaid Live Editor:免费在线图表制作终极指南

5分钟掌握Mermaid Live Editor&#xff1a;免费在线图表制作终极指南 【免费下载链接】mermaid-live-editor Location has moved to https://github.com/mermaid-js/mermaid-live-editor 项目地址: https://gitcode.com/gh_mirrors/mer/mermaid-live-editor Mermaid Liv…

作者头像 李华