WPF资源系统

文件资源

程序集资源

例如一些图片、音频、字体等,将这些文件导入到项目中,就可以在代码中使用这些资源

图片资源

  1. 将资源复制到项目中。
    image
  2. 右键设计文件属性的生成操作为资源
    image
    image
  3. 在xaml中使用图片资源
<Window x:Class="wpf_study.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:wpf_study"mc:Ignorable="d"Title="MainWindow" Height="450" Width="800"><Grid><Grid.RowDefinitions ><RowDefinition  Height="auto"/><RowDefinition  Height="1*"/><RowDefinition  Height="1*"/><RowDefinition  Height="3*"/></Grid.RowDefinitions><Grid.ColumnDefinitions ><ColumnDefinition /><ColumnDefinition /><ColumnDefinition /><ColumnDefinition /></Grid.ColumnDefinitions><Image Source="/Asserts/107119287_p0_master1200 (1).jpg" /></Grid>
</Window>

启动发现图片可以在应用程序中显示了
image
还有一种方式直接使用pack url来引入资源
pack url的格式如下所示:
pack://application:,,,/[程序集名称;component/][文件夹/]文件名
如下代码所示图片也可以引用进来

<Grid><Grid.RowDefinitions ><RowDefinition  Height="auto"/><RowDefinition  Height="1*"/><RowDefinition  Height="1*"/><RowDefinition  Height="3*"/></Grid.RowDefinitions><Grid.ColumnDefinitions ><ColumnDefinition /><ColumnDefinition /><ColumnDefinition /><ColumnDefinition /></Grid.ColumnDefinitions><Image Source="pack://application:,,,/Asserts/107119287_p0_master1200 (1).jpg" /></Grid>

当把资源文件设置成resource类型时,资源文件会被编译进exe或dll内部,这时候没有路径,所以无法直接使用路径来访问,所以需要pack url。
image

对象资源

可以在窗口资源中抽出一些通用的变量来共其他元素服用,如下所示,定义了四张图片,如果按之前的配置来,需要给每张图片都要设置宽和高,如果后期宽和高变了,维护起来可能不太方便。

        <Image Grid.Column="1" Source="pack://application:,,,/Asserts/107119287_p0_master1200 (1).jpg" /><Image Grid.Column="0" Source="pack://application:,,,/Asserts/107119287_p0_master1200 (1).jpg" /><Image Grid.Column="2" Source="pack://application:,,,/Asserts/107119287_p0_master1200 (1).jpg" /><Image Grid.Column="3" Source="pack://application:,,,/Asserts/107119287_p0_master1200 (1).jpg" />

如果使用窗口资源的话就可以完美解决这个问题,只需要在窗口资源中定义了宽和高的值,然后在元素中进行引用,即便是后期值变了,也只需要在窗口资源中进行修改,不需要修改多个地方,后期维护起来也方便。
定义窗口资源需要Window.resouces标签,如果想要在xaml中使用数字类型的变量还需要引入xmlns:System="clr-namespace:System;assembly=mscorlib"命名空间。
如下所示定义了一个窗口资源,它的值为Double类型的200,定义完成后{StaticResource }关键字引入,staticResouce后面跟着我们定义的key即可,如下所示

<Window x:Class="wpf_study.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:wpf_study"xmlns:System="clr-namespace:System;assembly=mscorlib"mc:Ignorable="d"Title="MainWindow" Height="450" Width="800"><Window.Resources><!--定义一个double类型的窗口元素 key为wid 值为200--><System:Double x:Key="wid">200</System:Double></Window.Resources><Grid><Grid.RowDefinitions ><RowDefinition  Height="auto"/><RowDefinition  Height="1*"/><RowDefinition  Height="1*"/><RowDefinition  Height="3*"/></Grid.RowDefinitions><Grid.ColumnDefinitions ><ColumnDefinition /><ColumnDefinition /><ColumnDefinition /><ColumnDefinition /></Grid.ColumnDefinitions><!-- 使用窗口元素wid --><Image Grid.Column="1" Width="{StaticResource wid}" Height="{StaticResource wid}" Source="pack://application:,,,/Asserts/107119287_p0_master1200 (1).jpg" /><Image Grid.Column="0" Width="{StaticResource wid}" Height="{StaticResource wid}" Source="pack://application:,,,/Asserts/107119287_p0_master1200 (1).jpg" /><Image Grid.Column="2" Width="{StaticResource wid}" Height="{StaticResource wid}" Source="pack://application:,,,/Asserts/107119287_p0_master1200 (1).jpg" /><Image Grid.Column="3" Width="{StaticResource wid}" Height="{StaticResource wid}" Source="pack://application:,,,/Asserts/107119287_p0_master1200 (1).jpg" /></Grid>
</Window>

除了窗口资源外,其他元素也有资源,例如border.resource等,用起来也和窗口资源一样

        <Border><Border.Resources></Border.Resources></Border>

资源字典

类似css一样,可以将资源信息都封装到一个文件里,使用时直接引用文件即可,这样集中维护的话,后期维护起来也很方便。
可以右键新建资源字典
image
然后将配置设置到文件里

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:System="clr-namespace:System;assembly=mscorlib"><System:Double x:Key="hw">100</System:Double></ResourceDictionary>

在xaml中如果引用单个的话直接在使用source属性引用数据字典即可,和引用图片音频类似,直接使用pack url也可以的。

    <Window.Resources><ResourceDictionary Source="/res.xaml"></ResourceDictionary></Window.Resources>

如果要引用多个数据字典的话需要添加ResourceDictionary.MergedDictionaries,然后在标签中定义每个资源字典即可,如下所示:

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

静态资源与动态资源

  • 静态资源: 程序编译时已经确定了。
  • 动态资源: 在程序运行的过程中资源会发生改变,修改后的资源会自动刷新到组件中。

样式

类似web前端的css配置,可以直接通过style标签来设置指定组件的样式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1179101.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RK3588端实时人体姿态识别方案:YOLOv11-Pose高精度落地,推理速度直接拉满

【YOLOv11-pose姿态识别部署至RK3588:模型训练到RKNN落地,让人体姿态分析精度与边缘推理速度双突破】 在人体姿态识别场景中,传统模型在复杂动作下的关键点漏检率高达20%以上,而基于YOLOv11-pose的改进方案可将关键点平均精度(mAP)提升至91.3%;通过RK3588边缘平台与RKNN…

union 和 union all的区别

1、union和union all UNION对两个结果集进行并集操作&#xff0c;不包括重复行&#xff0c;相当于使用distinct关键字。而UNION ALL则对两个结果集进行并集操作&#xff0c;包括重复行&#xff0c;即所有结果全部显示&#xff0c;不管是否重复。 UNION操作会去除重复的记录&…

Flutter 3.22+ 高性能开发实战:从状态管理到原生交互全解析 - 指南

Flutter 3.22+ 高性能开发实战:从状态管理到原生交互全解析 - 指南2026-01-18 18:25 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !…

【大数据毕设选题推荐】基于Hadoop+Spark的起点小说网数据可视化分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习

✍✍计算机毕设指导师** ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡有什么问题可以…

8B小模型后训练实战:企业私域语义空间稳定性与通用能力平衡指南

本文探讨8B小模型通过后训练在企业私域语义空间中的应用价值。实验表明&#xff0c;经过SFTDPO训练的模型能在不依赖system prompt/RAG的情况下稳定进入私域语义空间&#xff0c;同时保持通用知识与CoT能力。文章分享了三条实践经验&#xff1a;警惕"脑损伤"SFT、训练…

2026首发版,自学AI大模型的正确顺序:最新最全学习路线

本文提供大模型学习的七个阶段完整路线图&#xff1a;从数学编程基础、机器学习、深度学习到自然语言处理、大规模语言模型(如Transformer、BERT、GPT)及其应用&#xff0c;最后为持续学习进阶。每个阶段都配有推荐书籍、课程和论文资源&#xff0c;并提供学习资料包帮助零基础…

【计算机毕设推荐】:Hadoop+Django气象地质灾害大数据可视化系统 毕业设计 选题推荐 毕设选题 数据分析 机器学习

✍✍计算机毕设指导师** ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡有什么问题可以…

基于Qlearning强化学习的水下无人航行器三维场景路径规划与避障系统matlab性能仿真

1.引言 水下无人航行器(Unmanned Underwater Vehicle, UUV)的三维路径规划与避障是海洋工程领域的核心问题,其目标是在复杂水下环境(含礁石、沉船等静态障碍物及洋流等动态干扰)中,自主生成一条从起点到目标点的…

大模型选择困难症?8款主流AI助手(GPT/Claude/GLM等)特点与适用场景详解,建议收藏

文章对比8种主流大语言模型(GPT、Claude、Gemini、GLM、Minimax、DeepSeek、Qwen和Kimi)的特点和适用场景。GPT系列全能型&#xff1b;Claude擅长写作&#xff1b;Gemini擅长资料整合&#xff1b;GLM中文自然&#xff1b;Minimax创意丰富&#xff1b;DeepSeek代码逻辑强&#x…

linux 设置 udp 缓冲区大小的方法有多少种

1.linux 设置 udp 缓冲区大小的方法有多少种 在 Linux 系统中&#xff0c;设置 UDP 缓冲区大小的方法主要有以下几种&#xff0c;分别适用于不同的场景和粒度&#xff08;系统级、进程级、套接字级&#xff09;&#xff1a; 1. 通过 setsockopt() 系统调用&#xff08;套接字级…

程序员转型AI产品经理完整指南:大模型时代必备技能与学习路径

文章详细分析了转型AI产品经理的必要性与路径。首先指出AI快速发展使传统产品经理面临挑战&#xff0c;转型是必然趋势。然后介绍了AI产品经理的四大分类&#xff1a;C端、B端、硬件型和技术型&#xff0c;并分析了各自的特点和要求。最后提供了转型方法&#xff1a;确定适合方…

爱心公益 PPT 一键生成平台 TOP6,无需设计基础也能做

6款好用工具推荐&#xff0c;新手也能搞定爱心公益PPT一键生成 作为经常帮公益组织和校园社团做PPT的过来人&#xff0c;我太懂新手做爱心公益PPT的痛点了&#xff1a;找模板耗半天、排版没思路、素材怕侵权&#xff0c;最后熬夜做出来的效果还不尽如人意。其实现在有很多实用工…

关于SSD1315/SSD1306的0xDA指令

最近在玩一块使用ssd1315驱动的屏幕,发现0xDA指令(Set COM Pins Hardware Configuration)的实际效果和数据手册有些出入,经过查看显示屏的手册和反复实验,发现了一些细节问题。把自己的总结分享出来。因为ssd1306…

Redis-配置文件 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

内存清理软件工具WinMemoryCleaner,【windows内存自动优化清理】

windows电脑内存清理工具WinMemoryCleaner&#xff0c;让你电脑飞起来 WinMemoryCleaner内存优化软件是Windows专用工具&#xff0c;它以轻量安全、精准高效的特性&#xff0c;解决多任务卡顿、内存占用过高难题&#xff0c;适配全版本Windows系统。大小才472KB&#xff0c;还…

让 YOLOv11 Pose 在 RKNN 上跑起来:端侧姿态估计部署与性能优化实战

文章目录 YOLOv11 Pose在RKNN平台的部署实现:从理论到实践 摘要 1. 引言 1.1 研究背景 1.2 技术挑战 1.3 本文贡献 2. 理论基础 2.1 YOLOv11 Pose架构分析 2.1.1 Backbone网络 2.1.2 Neck网络 2.1.3 检测头设计 2.2 姿态估计的数学模型 2.2.1 关键点表示 2.2.2 损失函数设计 2…

AI学术支持:6个平台智能分析与专业内容优化

工具对比总结 以下是8个AI论文工具的简要排名&#xff0c;基于核心功能、处理速度和适用性对比。排名侧重实用性与用户反馈&#xff0c;数据源于引用内容案例&#xff1a; 工具名称 主要功能 优势亮点 aibiye 降AIGC率 20分钟处理&#xff0c;AIGC率降至个位数&#xfff…

导师严选2026自考AI论文平台TOP10:哪款真能帮你写好毕业论文?

导师严选2026自考AI论文平台TOP10&#xff1a;哪款真能帮你写好毕业论文&#xff1f; 2026年自考AI论文平台测评&#xff1a;如何选对工具提升写作效率&#xff1f; 随着人工智能技术的不断进步&#xff0c;越来越多的自考生开始借助AI论文平台来辅助毕业论文的撰写。然而&…

Bug侦破大会:破解技术悬案的终极策略

技术悬案&#xff1a;Bug侦破大会的挑战与策略主题引入 从软件开发的日常中选取典型Bug案例&#xff0c;以悬疑叙事方式吸引读者&#xff0c;强调复杂Bug对项目的潜在影响。案例背景设定选择具有代表性的技术场景&#xff08;如分布式系统、内存泄漏、并发问题&#xff09;&…

无人机实时图像推理加速实战

&#x1f493; 博客主页&#xff1a;借口的CSDN主页 ⏩ 文章专栏&#xff1a;《热点资讯》 无人机实时图像推理加速&#xff1a;实战中的效率革命目录无人机实时图像推理加速&#xff1a;实战中的效率革命 引言&#xff1a;实时性&#xff0c;无人机智能的生死线 一、无人机图像…