WPF样式学习笔记
以前写界面时经常给每个按钮单独设置颜色、大小、字体不仅代码重复而且后期修改很麻烦。WPF 提供的样式机制很好地解决了这个问题。样式的核心思想就是统一设置、重复使用、方便维护。一、什么是样式StyleWPF 中的样式本质上就是把一组属性值打包起来然后应用到多个控件上。例如按钮宽度统一 100高度统一 50字体统一 20背景色统一绿色如果没有样式每个按钮都要写一遍属性。如果使用样式只写一次多个按钮共享。二、为什么要学样式如果项目里有很多按钮Button Width100 Height50 BackgroundGreen/ Button Width100 Height50 BackgroundGreen/ Button Width100 Height50 BackgroundGreen/这种写法会出现几个问题1. 重复代码太多多个控件属性一样却写很多遍。2. 后期修改麻烦比如按钮宽度改成120需要一个个修改。3. 风格不统一团队开发时每个人写法不同界面容易混乱。所以使用样式后Style TargetTypeButton所有 Button 自动统一风格。三、Style 的核心组成样式类叫 Style最重要几个成员属性作用TargetType作用于哪个控件Setters设置属性值Triggers触发器BasedOn继承其他样式Resources资源四、最基础样式写法统一按钮风格Window.Resources Style TargetTypeButton Setter PropertyWidth Value100/ Setter PropertyHeight Value50/ Setter PropertyFontSize Value20/ Setter PropertyBackground ValueGreen/ /Style /Window.Resources然后按钮直接写Button Content登录/ Button Content退出/所有按钮自动应用样式。五、x:Key 命名样式按需使用如果不希望所有按钮都一样就给样式起名字Style x:KeyLoginStyle TargetTypeButton使用时Button Style{StaticResource LoginStyle}/这样只有引用它的按钮才生效。六、StaticResource 和 DynamicResource 区别1. StaticResource静态资源程序启动时就确定资源。效率高最常用。Style{StaticResource LoginStyle}2. DynamicResource动态资源运行时再查找资源。适合主题切换、动态换肤。Background{DynamicResource MainColor}我的理解静态资源 提前准备好动态资源 用的时候再找七、样式继承BasedOn如果很多按钮只有颜色不同其余属性一样就可以继承。Style x:KeyBaseButtonStyle TargetTypeButton Setter PropertyWidth Value100/ Setter PropertyHeight Value50/ /Style Style x:KeyRedButtonStyle TargetTypeButton BasedOn{StaticResource BaseButtonStyle} Setter PropertyBackground ValueRed/ /Style这就像 C# 类继承减少重复代码非常重要。八、样式可以写在哪些位置1. 写在控件内部只对当前控件有效适合临时使用。2. 写在 Window.Resources当前窗口所有控件可用适合单页面项目。3. 写在 App.xaml全项目通用适合正式项目。4. 写在资源字典文件九、资源字典 ResourceDictionaryWPF 所有资源都能放进字典里例如StyleBrush画笔Template模板字体颜色加载方式ResourceDictionary.MergedDictionaries ResourceDictionary Source/ButtonDictionary.xaml/ /ResourceDictionary.MergedDictionaries我的理解资源字典 专门存放公共资源的仓库。十、触发器 Trigger触发器作用当满足某个条件时自动改变控件样式。比如鼠标移入按钮变色点击按钮缩小文本框为空时边框变红最常用 TriggerStyle.Triggers Trigger PropertyIsMouseOver ValueTrue Setter PropertyBackground ValueOrange/ /Trigger /Style.Triggers我的理解Trigger 就像自动响应器如果发生某条件那么执行某效果十一、常见触发器类型了解类型作用Trigger属性变化触发MultiTrigger多条件触发DataTrigger数据触发MultiDataTrigger多数据触发EventTrigger事件触发十二、Setter 本质理解Setter 是样式里的单条设置Setter PropertyWidth Value100/意思是把 Width 设置为 100多个 Setter 组合起来形成完整样式。十三、总结WPF 样式是 UI 开发最核心内容之一。它优势非常明显1. 代码更少2. 修改方便3. 页面统一美观4. 企业项目规范