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

资源

资源

一、什么是 WPF 资源?

资源 = 可以重复使用的界面对象,放在界面的 “公共素材库” 里。
可以放:
  • 颜色、画刷
  • 样式(Style)
  • 模板(Template)
  • 字体、尺寸
  • 转换器、数据
  • 图片、动画
优点:
  • 复用(写一次,到处用)
  • 统一(改一处,全部变)
  • 解耦(界面与样式分离)
  • 支持换肤

二、资源的 2 种引用方式(必须会)

1. StaticResource(静态资源)

  • 加载一次
  • 性能高
  • 运行时不能修改
1 {StaticResource 资源Key}

三、资源的 4 个作用域(从内到外)

1. 控件级资源(只有自己能用)

1 <Button Content="按钮">
2     <Button.Resources>
3         <SolidColorBrush x:Key="btnColor" Color="LightBlue"/>
4     </Button.Resources>
5 </Button>

2. 容器级资源(容器内所有控件可用)

1 <StackPanel>
2     <StackPanel.Resources>
3         <Style x:Key="txtStyle" TargetType="TextBlock">
4             <Setter Property="FontSize" Value="20"/>
5         </Style>
6     </StackPanel.Resources>
7 
8     <TextBlock Style="{StaticResource txtStyle}" Text="测试"/>
9 </StackPanel>

3. 窗口级资源(整个窗口都能用)

1 <Window.Resources>
2     <SolidColorBrush x:Key="themeColor" Color="Orange"/>
3 </Window.Resources>

4. 应用程序级资源(整个软件全局可用)

App.xaml:

<Application.Resources><SolidColorBrush x:Key="globalColor" Color="Purple"/>
</Application.Resources>

四、资源查找规则(超级重要)

WPF 查找资源顺序:
  1. 自己的 Resources
  2. 父容器
  3. 更高层容器
  4. 窗口
  5. App.xaml
  6. 系统资源
  7. 找不到 → 报错
一句话:从内向外、从下向上查找

五、资源定义格式(固定写法)

1 <父元素.Resources>
2     <资源类型 x:Key="资源名称">...</资源类型>
3 </父元素.Resources>

必须带 x:Key,否则无法使用!

六、超多实例(直接复制运行)

实例 1:颜色 / 画刷资源(最常用)

定义

1 <Window.Resources>
2     <SolidColorBrush x:Key="RedBrush" Color="#FF4444"/>
3     <SolidColorBrush x:Key="BlueBrush" Color="SkyBlue"/>
4 </Window.Resources>

使用

1 <TextBlock Foreground="{StaticResource RedBrush}" Text="红色文字"/>
2 <Button Background="{StaticResource BlueBrush}" Content="蓝色按钮"/>

实例 2:字体、尺寸资源

1 <Window.Resources>
2     <system:Double x:Key="FontSize">22</system:Double>
3     <FontFamily x:Key="FontFamily">微软雅黑</FontFamily>
4 </Window.Resources>
1 <TextBlock FontSize="{StaticResource FontSize}"
2            FontFamily="{StaticResource FontFamily}"
3            Text="测试字体"/>

需要命名空间:

1 xmlns:system="clr-namespace:System;assembly=mscorlib"

实例 3:样式资源(Style)

1 <Window.Resources>
2     <Style x:Key="ButtonStyle" TargetType="Button">
3         <Setter Property="FontSize" Value="18"/>
4         <Setter Property="Foreground" Value="White"/>
5         <Setter Property="Background" Value="Green"/>
6     </Style>
7 </Window.Resources>
1 <Button Style="{StaticResource ButtonStyle}" Content="样式按钮"/>

实例 4:字符串资源(固定文本)

1 <Window.Resources>
2     <system:String x:Key="Tips">请输入用户名</system:String>
3 </Window.Resources>
1 <TextBlock Text="{StaticResource Tips}"/>

实例 5:资源字典(大型项目必须用)

1. 添加资源字典文件:Theme.xaml

1 <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
2                     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
3 
4     <SolidColorBrush x:Key="ThemeColor" Color="Purple"/>
5 
6 </ResourceDictionary>

2. 在窗口或 App 中合并

1 <Window.Resources>
2     <ResourceDictionary>
3         <ResourceDictionary.MergedDictionaries>
4             <ResourceDictionary Source="Theme.xaml"/>
5         </ResourceDictionary.MergedDictionaries>
6     </ResourceDictionary>
7 </Window.Resources>

3. 使用

1 <Button Background="{StaticResource ThemeColor}" Content="主题按钮"/>

七、StaticResource 和 DynamicResource 区别

 StaticResourceDynamicResource
加载 一次 每次使用
性能 较慢
运行修改 ❌ 不支持 ✅ 支持
用途 样式、颜色 主题切换

 

八、后台 C# 访问资源

1 // 获取资源
2 var brush = this.FindResource("RedBrush") as SolidColorBrush;
3 
4 // 设置资源
5 this.Resources["RedBrush"] = new SolidColorBrush(Colors.Blue);

九、最核心总结(必须记住)

  1. 资源 = 可复用界面对象
  2. 必须带 x:Key
  3. 作用域:控件 → 容器 → 窗口 → 应用
  4. 查找顺序:从内向外
  5. 两种引用:Static / Dynamic
  6. 资源字典 = 大型项目标准
http://www.jsqmd.com/news/533995/

相关文章:

  • SeqGPT-560M入门指南:Streamlit组件封装——可复用NER输入/输出UI组件
  • 【管理架构】从“流程约束”到“系统赋能”:如何构建高效运转的组织闭环?
  • 我决定使用自己的公网服务器作为支付回调接口
  • GBase 8a 运维巡检与监控告警实践:别等故障来了,才想起看日志
  • 如何禁止微信发文件、禁止QQ发送文件、防止聊天软件泄密电脑文件的行为?
  • 四川省挤塑聚苯板(XPS)采购选型指南——破解选择困境 - 深度智识库
  • 垂直领域破局者:2026 AI超级员工系统细分赛道实战报告
  • 新手也能搞定!STM32F407ZGT6最小系统板PCB设计全流程(附原理图/3D图)
  • YOLOv8改进:引入BiFormer双层路由注意力机制,让目标检测更高效更精准
  • yfinance终极指南:5分钟快速获取免费金融数据的完整教程
  • clip的底层原理---深入源码:手把手剖析OpenAI CLIP的实现结构与细节 - Sanny.Liu
  • LLM+HTN智能任务分解在AI客服系统中的实战应用与架构解析
  • Agent智能体架构解析:如何用百川2-13B构建自主任务执行系统
  • 微软MOS认证,这些考生满分通过了~
  • 知名的铁锅炖加盟企业靠谱推荐,覆盖山东河南等地 - myqiye
  • HunyuanVideo-Foley行业应用:电商商品视频自动配环境音、AR营销素材生成
  • 托盘姿态检测关键点检测数据集YOLO格式1943张1类别3关键点
  • 2026年山东、陕西等地口碑好的省煤器厂家推荐,诚信源头厂家全解读 - mypinpai
  • 十大品牌深度评测与选型实战-访客机采购指南 - 智能硬件-产品评测
  • 2026年鹤管厂家实力推荐榜:上装/下装/自动/火车/LNG全品类深度解析,专业流体装卸解决方案优选 - 品牌企业推荐师(官方)
  • iOS 18和macOS Sequoia上的Apple Intelligence:如何用AI提升你的日常工作效率
  • 从航模到工业AGV:麦克纳姆轮的5种酷炫玩法及电机控制要点
  • 华为畅享90系列发布,首次搭载HarmonyOS 6,鸿蒙完成全机型覆盖
  • Blender3mfFormat:重新定义3D打印数据流转的开源解决方案
  • 聊聊钢跳板成型设备按需定制,久丰自动化定制费用怎么算? - 工业推荐榜
  • 2026年甘肃太阳能路灯厂家精选 适配乡村文旅工程 实力靠谱可落地 - 深度智识库
  • OCCT弧线偏移问题
  • 选购移动式隧道窑,河南亚新窑炉在福建、云南地区靠谱吗? - 工业品牌热点
  • CS231n作业实战:KNN分类器从零实现到性能优化(附完整代码解析)
  • AI提示词:为新产品发布制定一份成功的营销计划