闲话WPF之十七(WPF中的资源 [3])
来源:百度文库 编辑:神马文学网 时间:2024/04/29 13:54:21
继续相同的话题:WPF中的资源。这次我将尝试从另外一个角度来分析WPF中的资源:资源编译行为,以及如何根据应用程序的需要选择适当的类型。
首先建立一个默认的WPF工程,然后向工程中添加一个ICON资源。在添加资源后,我们可以选择资源的类型,如下图所示:
从图中的下拉列表我们可以看到资源所支持的各种类型。主要支持的编译行为是Resource和Content。如果选择为Resource,再用文本方式打开C#工程文件(*.csproj文件),其中我们为发现如下的内容:
如果选择为Content,看到的资源项内容应该是:
那么,这两者之间有什么区别呢?我们先看Resource类型。如果某个文件在工程文本中被标识为Resource,这个文件将被嵌入到应用程序所在的Assembly。如果我们设置了Localizable元数据,对应的Resource文件将位于卫星Assembly。
工程编译后,工程中的所有指定资源文件一起创建一个.resources文件。对于本地化应用程序,将加载对应的卫星Assembly。
如果文件标识为Content,并且将CopyToOutputDirectory设置为Always或者PerserveNewest。这个文件被拷贝到编译输出目录与应用程序Assembly一起。
Always
编译时,标识为Content的文件都会被创建一个文件映射关系。运行时,根据指定的Uri,WPF的加载机制将根据实际情况加载资源。
不管我们所引用的类型是Resource还是Content,在代码中,我们可以通过简单的相关Uri来访问这些资源:
首先建立一个默认的WPF工程,然后向工程中添加一个ICON资源。在添加资源后,我们可以选择资源的类型,如下图所示:
从图中的下拉列表我们可以看到资源所支持的各种类型。主要支持的编译行为是Resource和Content。如果选择为Resource,再用文本方式打开C#工程文件(*.csproj文件),其中我们为发现如下的内容:
如果选择为Content,看到的资源项内容应该是:
那么,这两者之间有什么区别呢?我们先看Resource类型。如果某个文件在工程文本中被标识为Resource,这个文件将被嵌入到应用程序所在的Assembly。如果我们设置了Localizable元数据,对应的Resource文件将位于卫星Assembly。
工程编译后,工程中的所有指定资源文件一起创建一个.resources文件。对于本地化应用程序,将加载对应的卫星Assembly。
如果文件标识为Content,并且将CopyToOutputDirectory设置为Always或者PerserveNewest。这个文件被拷贝到编译输出目录与应用程序Assembly一起。
编译时,标识为Content的文件都会被创建一个文件映射关系。运行时,根据指定的Uri,WPF的加载机制将根据实际情况加载资源。
不管我们所引用的类型是Resource还是Content,在代码中,我们可以通过简单的相关Uri来访问这些资源:
闲话WPF之十七(WPF中的资源 [3])
闲话WPF之十七(WPF中的资源 [3])
闲话WPF之十八(WPF中的资源 [4] )
闲话WPF之十六(WPF中的资源 [2])
闲话WPF之二五(WPF中的ControlTemplate [3])
闲话WPF之二二(WPF中的Style)
闲话WPF之二十(WPF中的传递事件 [2] )
闲话WPF之十四(WPF的数据处理 [1] )
闲话WPF之十一(Dependency属性 [3] )
闲话WPF之六(XAML的标记兼容性(Markup Compaibility))
WPF中的传递事件
WPF中的动画.
WPF疑难杂症之一(3D场景)
WPF疑难杂症之一(3D场景)
(WPF)对话框中的数据绑定
WPF, WPF/E释疑
WPF概述
Windows Presentation Foundation(WPF)中的数据绑定(使用XmlDataProvider作控件绑定之二:使用外部URL的XML文件)
Windows Presentation Foundation(WPF)中的数据绑定(使用XmlDataProvider作控件绑定)
Windows Presentation Foundation(WPF)中的数据绑定(控件与控件值的绑定)
最优化WPF 3D性能(基于“Tier-2”硬件)
WPF Databinding----Collections
WPF性能优化点
WPF开发简介