WPF学习之资源-Resources

WPF通过资源来保存一些可以被重复利用的样式,对象定义以及一些传统的资源如二进制数据,图片等等,而在其支持上也更能体现出这些资源定义的优越性。比如通过ResourceDictionary的支持就可以通过资源来实现换肤功能,在ExpressionBlend中设计的酷炫造型也可以通过导出成资源来很容易的被程序员所引用,本地化的实现,访问另外程序集的嵌入式资源等等。这些都给我们提供了丰富的手段通过资源访问架构来构建丰富的富媒体应用程序。本文简单讲解了WPF Resources的分类及其常见用法,并简单触及用ResourceDictionary来管理多个Resources文件(这是换肤的基础)。

在WPF中的资源不仅依赖于核心.NET的资源系统,在其基础上也添加了对两种不同资源类型的支持:二进制资源和逻辑资源。而对于这些资源类型的构建动作也有了更多的支持选项。

1.二进制资源

二进制资源其实是一些传统的资源项,比如位图,音频文件,视频文件,松散文件(Loose file)等等。对于这些资源项我们可以将其存储为松散文件,或者编译进程序集中。这与传统的.NET程序其实是相通的,但在WPF中提供了两种对二进制资源的构建选项:

· Resource: 将资源放入程序集中(如果是有本地化支持的话会编译到对应语言集的子程序集中。

· Content:将这个资源作为一个松散文件加入到程序集中,程序集会记录对应的文件是否存在及其路径。这就相当于我们web开发中常用的构建动作。

对于MSBuild来说这也是默认的构建类型,例如,

  <Content Include="Images\Go.ico" />
  <Content Include="Images\Go.jpg" />
  <Content Include="Images\Go2.gif" />
  <Content Include="Images\Go2.jpg" />
  <Content Include="Images\information16.png" />
  <Content Include="Images\pass16.png" />
  <Content Include="Images\pass32.png" />
  <Content Include="Images\unknown16.png" />
  <Content Include="Images\warning.gif" />
  <Content Include="Images\warning16.png" />
  <EmbeddedResource Include="LoginForm.resx">
   <SubType>Designer</SubType>
   <DependentUpon>LoginForm.cs</DependentUpon>
  </EmbeddedResource>
  <EmbeddedResource Include="OptionsForm.resx">
   <SubType>Designer</SubType>
   <DependentUpon>OptionsForm.cs</DependentUpon>
  </EmbeddedResource>
  <EmbeddedResource Include="PageHistory.resx">
   <SubType>Designer</SubType>
   <DependentUpon>PageHistory.cs</DependentUpon>
  </EmbeddedResource>

上图所示是一个普通的WinForm应用程序的项目文件,对于添加到其内部的二进制资源文件其默认的构建动作便是Content-表明其作为一个松散文件存储,只要保证其对应路径的文件存在则可以自动加载(而无需再你的打包文件中必须包含)。而你也会看到EmbeddedResource构建动作,这是WinForm的构建动作,它和Resource构建动作很相似,会在程序集中嵌入一个二进制资源,但是WPF中因为嵌入式资源比WPF还要优先,所以需要尽量避免使用。

之所以推荐使用Resource和Content构建类型是因为这样嵌入的资源可以很容易的在XAML中被引用,而且对于WPF的统一资源识别符也是专门针对这两种构建动作而设计的。相反地,对于EmbeddedResource构建动作嵌入的资源是不能在XAML中被引用的,除非自定义代码。

时间: 2024-09-19 08:56:38

WPF学习之资源-Resources的相关文章

ArcGIS for WPF 访问外部资源【进阶之构造URL】

原文 http://www.cnblogs.com/wdysunflower/archive/2013/05/29/3039645.html 呵呵~好久没逛园子,没写博客了. 最近刚好又在弄GIS这块,有些收获跟大家分享一下,有些问题也希望能得到"知情人"的解答. 首先需要指出的是,"访问外部资源"实现的方式,在我之前的文章里已经写的比较清楚了: ArcGIS for WPF 访问外部资源   [主题] 探索构造可用URL的方法及思路 . (仅供大家研究.学习.分析

盘点|10条最有用的深度学习教程资源(附教程链接)

本文来源于Github blog BY omtcyfz 译者:赫鑫宇 郭昕 今天介绍一些深度学习的资源干货!个人认为这些资源对于那些刚刚进入机器学习领域准备摸索一番的小白十分有帮助.同时如果你想进一步了解神经网络算法及其应用,那请阅览本篇文章吧,相信会对你有极大的帮助! 在上干货之前,先来讲一下我把这些资源整合起来并归结到本篇文章中的初衷.在刚开始入门学习的时候,我看了大量的没有文字介绍的链接资源,我完全不知道他们中的哪一个是值得花时间研究的.所以现在我把见过的最有用的一些链接资源拿出来并配以简

动态-WPF怎么获取资源中的path路径控件

问题描述 WPF怎么获取资源中的path路径控件 /i:EventTrigger /i:EventTrigger/i:Interaction.Triggers 这是按钮的样式,我用path拼了个铅笔图案,想在后台动态改变铅笔的背景颜色. 但是不知道怎么获取.

wpf c#-WPF C# 词典资源物理文件中某项的修改

问题描述 WPF C# 词典资源物理文件中某项的修改 如何修改wpf的词典资源的物理文件中的内容,例如 其中词典为 <sys:String x:Key="test">xxxx</sys:String> 我想修改为 <sys:String x:Key="test">wwww</sys:String> 不是简单的在内存中修改,而是要把修改后的值保存到物理的词典资源中

Zend Framework教程之资源(Resources)用法实例详解_php实例

本文实例讲述了Zend Framework教程之资源(Resources)用法.分享给大家供大家参考,具体如下: Zend_Application_Resource_Resource Zend_Application_Bootstrap_ResourceBootstrapper是引导类加载注册资源插件使用的接口. Zend_Application_Resource_Resource是一个资源插件接口. Zend_Application_Resource_Resource通常被用于实现了Zend_

ArcGIS for WPF 访问外部资源

原文 http://www.cnblogs.com/wdysunflower/archive/2011/07/14/2105584.html ArcGIS for WPF 访问外部资源 应用背景: 因项目需要尝试了解了ArcGIS.Bing Map.Google Map等开发技术,最终是使用ArcGIS写了个Demo. ArcGIS现提供了一套控件库ArcGIS  API  for WPF供Silverlight开发使用,其中也包括WPF可以使用的控件. 对比Sample Demo以及自己动手实

谁有wpf的皮肤资源啊?

问题描述 谁有wpf的皮肤资源啊?要淡雅一点的那种,提供一下,感激不尽 解决方案 解决方案二:wpf是一个高度灵活.自定义的框架,在这样一个环境中,你还需要"皮肤"这种东西?解决方案三:找一些第三方的控件集,比如RadControlforwpf,把它的皮肤资源下载下来,自己再看看怎么用.或者皮肤资源自己都可以定义了,只不过是不同的resource

NET开发学习项目资源(2)

  NET开发学习项目资源   击标题链接即可下载. 目录: 1.征婚交友网站    前台交友信息和后台会员管理两大部分组成.    前台功能模块    该模块主要包括查询交友信息.显示交友信息.会员登录.会员信息管理.修改会员档案信息.上传会员信息.管理我的好友信息和查看和发送短信息.    后台管理模块    该模块主要包括后台管理网站注册会员信息和后台安全退出等功能.     2.明日播客网   一个通过视频和广大网友进行交流的网站.该网站可分为前台视频浏览和后台视频管理两大部分组成.  

.NET系统学习----Globalization &amp;amp; Resources

.NET系统学习----Globalization & Resources l 前言 l 了解资源文件 l 创建资源文件 l 在程序中使用资源文件 l 资源文件的命名和部署 l 参考 前言: 在学习如何使用.NET资源文件以及如何开发World-Ready程序之前,我们先通过一个例子来看看为什么要使用资源文件,以及使用它的好处. 假设要在程序中根据当前的Culutre来设置Form的Title和Logo: private void Form1_Load(object sender, System