WPF 中的 Pack URI-访问程序集资源

在 Windows Presentation Foundation (WPF)
中,使用统一资源标识符 (URI) 标识和加载文件的方式有很多,包括:

  • 指定当应用程序第一次启动时显示的用户界面 (UI)。

  • 加载图像。

  • 导航到页

  • 加载不可执行的数据文件。

在代码中使用 Pack
URI

在代码中,可以通过实例化 Uri 类并将
pack URI 作为参数传递给构造函数来指定 pack URI。下面的示例说明了这一点。

C#

Uri uri = new Uri("pack://application:,,,/File.xaml");

默认情况下,Uri 类将
pack URI 视为绝对 pack URI。因此,在使用相对 pack URI 创建 Uri 类的实例时会引发异常。

C#

Uri uri = new Uri("/File.xaml");

幸运的是,Uri 类构造函数的 Uri(String,
UriKind)
 重载可以接受一个类型为 UriKind 的参数,使您可以指定 pack URI
是绝对的还是相对的。

C#

// Absolute URI (default)
Uri absoluteUri = new Uri("pack://application:,,,/File.xaml", UriKind.Absolute);
// Relative URI
Uri relativeUri = new Uri("/File.xaml", UriKind.Relative);

当您能够确定所提供的 pack URI 是相对 pack URI 还是绝对 pack URI
的时候,应该只指定 Absolute 或 Relative。如果您不了解所使用的 pack URI
的类型(例如,当用户在运行时输入 pack URI 时),请改用 RelativeOrAbsolute

C#

// Relative or Absolute URI provided by user via a text box
TextBox userProvidedUriTextBox = new TextBox();
Uri uri = new Uri(userProvidedUriTextBox.Text, UriKind.RelativeOrAbsolute);

资源文件 — 本地程序集
 Uri
uri = new Uri("pack://application:,,,/ResourceFile.xaml",
UriKind.Absolute);
 
子文件夹中的资源文件 — 本地程序集
 Uri
uri = new Uri("pack://application:,,,/Subfolder/ResourceFile.xaml",
UriKind.Absolute);
 
资源文件 —
所引用的程序集
 Uri uri = new
Uri("pack://application:,,,/ReferencedAssembly;component/ResourceFile.xaml",
UriKind.Absolute);
 
所引用的程序集的子文件夹中的资源文件
 Uri
uri = new
Uri("pack://application:,,,/ReferencedAssembly;component/Subfolder/ResourceFile.xaml",
UriKind.Absolute);
 
所引用的版本化程序集中的资源文件
 Uri
uri = new
Uri("pack://application:,,,/ReferencedAssembly;v1.0.0.0;component/ResourceFile.xaml",
UriKind.Absolute);
 
内容文件
 Uri
uri = new Uri("pack://application:,,,/ContentFile.xaml",
UriKind.Absolute);
 
子文件夹中的内容文件
 Uri uri = new
Uri("pack://application:,,,/Subfolder/ContentFile.xaml",
UriKind.Absolute);
 
源站点文件
 Uri uri = new
Uri("pack://siteoforigin:,,,/SOOFile.xaml", UriKind.Absolute);
 
子文件夹中的源站点文件
 Uri uri = new
Uri("pack://siteoforigin:,,,/Subfolder/SOOFile.xaml",
UriKind.Absolute);

文件
 相对 pack URI
 
资源文件 — 本地程序集
 Uri uri = new Uri("/ResourceFile.xaml",
UriKind.Relative);
 
子文件夹中的资源文件 — 本地程序集
 Uri
uri = new Uri("/Subfolder/ResourceFile.xaml", UriKind.Relative);
 
资源文件 —
所引用的程序集
 Uri uri = new
Uri("/ReferencedAssembly;component/ResourceFile.xaml",
UriKind.Relative);
 
子文件夹中的资源文件 — 所引用的程序集
 Uri
uri = new Uri("/ReferencedAssembly;component/Subfolder/ResourceFile.xaml",
UriKind.Relative);
 
内容文件
 Uri
uri = new Uri("/ContentFile.xaml", UriKind.Relative);
 
子文件夹中的内容文件
 Uri uri = new Uri("/Subfolder/ContentFile.xaml",
UriKind.Relative);

假如我们定义一个WPF User Control Library,并在其中添加一张图片,设置其属性为Resource。

现在我们新建一个WPF Application,然后添加这个Library的引用。

则我们可以这样访问Library中的Resource,Code Snip如下:

<Image  Source="/ClassLibraryResources;component/Images/6.png" />

在C#中,如下访问:

image1.Source = new BitmapImage(new Uri("/ClassLibraryResources;component/Images/6.png",UriKind.Relative));

程序运行如下:

官方网址:http://msdn.microsoft.com/zh-cn/library/aa970069.aspx

WPF 中的 Pack URI-访问程序集资源,布布扣,bubuko.com

时间: 2024-10-20 04:13:09

WPF 中的 Pack URI-访问程序集资源的相关文章

WPF 中的 Pack URI地(资源文件加载)

参考资源网http://msdn.microsoft.com/zh-cn/library/aa970069.aspx#Absolute_vs_Relative_Pack_URIs 在 Windows Presentation Foundation (WPF) 中,使用统一资源标识符 (URI) 标识和加载文件的方式有很多,包括: 指定当应用程序第一次启动时显示的用户界面 (UI). 加载图像. 导航到页 加载不可执行的数据文件. 此外,可以使用 URI 标识和加载位于各种位置的文件,这些位置包括

WPF中的Pack URI

说来也简单:首先,我在WPF项目中建立了一个用户自定义控件(CustomControl),VS模板为我们自动生成了 CustomControl1和Theme文件夹(里边包含一个Generic.xaml): 接着,我想把它移动到一个新的类库(DLL)里去: 然后我添加了对类库的引用在WPF项目中,我开始尝试使用该自定义控件,结果,发现显示的结果始终不对,但是也 没有报错.究其原因,肯定是xaml没有加载到,致使界面没有渲染模板.最后开始搜索MSDN,发现WPF应用程序外 部包引用一般使用pack:

【WPF学习】第二十八章 程序集资源

原文:[WPF学习]第二十八章 程序集资源 WPF应用程序中的程序集资源与其他.NET应用程序中的程序集资源在本质上是相同的.基本概念是为项目添加文件,从而Visual studio可将其嵌入到编译过的应用程序的EXE或DLL文件中.WPF程序集资源与其他应用程序中的程序集资源之间的重要区别是引用他们的寻址系统不同. 在前面章节已讨论过程序集资源的工作原理.因为每次编译应用程序时,项目中的每个XAML文件都转换为解析效率更高的BAML文件.这些BAML文件作为独立资源嵌入到程序集中.添加自己的资

idea中JSP页面不能访问静态资源(图片,js,css)

必须配置SpringMvc对访问静态资源的支持,idea默认就是在main/webapp 下的文件路径,要在web-info同级的resource文件下放置,JSP中 ${pageContext.request.contextPath}的添加 <mvc:default-servlet-handler/>的作用 优雅REST风格的资源URL不希望带 .html 或 .do 等后缀.由于早期的Spring MVC不能很好地处理静态资源,所以在web.xml中配置DispatcherServlet的

wpf中内置资源文件

wpf中包含三种文件类型 资源文件:编译到可执行或库 WPF 程序集中的数据文件. 内容文件:与可执行 WPF 程序集具有显式关联的独立数据文件. 源站点文件:与可执行 WPF 程序集没有关联的独立数据文件. 这三种类型的文件之间的一个重要区别是:资源文件和内容文件在生成时是已知的:程序集明确地知道它们的存在.但是对于源站点文件,程序集可能完全不知道它们,或者通过 pack 统一资源标识符 (URI) 引用知道它们的存在:在后一种情况下,不能保证被引用的源站点文件实际存在. 说说资源文件的使用

资源文件加载(Pack URI 方案)

Pack URI 在 Windows Presentation Foundation (WPF) 中,使用统一资源标识符 (URI) 标识和加载文件的方式有很多,包括:1.指定当应用程序第一次启动时显示的用户界面 (UI)2.加载图像3.导航到页4.加载不可执行的数据文件此外,可以使用 URI 标识和加载位于各种位置的文件,这些位置包括:1.当前程序集2.所引用的程序集3.相对于程序集的某个位置4.应用程序的源站点为了提供从这些位置标识和加载上述类型的文件的一致机制,WPF 利用了 pack U

[WPF]使用Pack URI路径访问二进制资源

一.路径格式定义 完整的URI定义为: pack://application,,,[/可选程序集名称;][可选版本号;][文件夹名称/]文件名称 缩略后的写法是: [文件夹名称/]文件名称 二.在XAML代码中使用URI路径 完整路径的使用: <Image x:Name="ImageBg" Source="pack://application:,,,/Resources/Images/Hydrangeas.jpg" Stretch="Fill&quo

[WPF]使用Pack URI路径訪问二进制资源

一.路径格式定义 完整的URI定义为: pack://application,,,[/可选程序集名称;][可选版本;][目录名称/]文件名 缩略后的写法是: [目录名称/]文件名 二.在XAML代码中使用URI路径 完整路径的使用: <Image x:Name="ImageBg" Source="pack://application:,,,/Resources/Images/Hydrangeas.jpg" Stretch="Fill" /&

WPF 中的 Uri 地址的不同写法

想写时发现别人已经写了,直接引用. http://www.cnblogs.com/xietianjiao/p/5640269.html 绝对 pack WPF URI pack://application:,,,/是协议:“,,,”是“///”的变体 1.资源文件 — 本地程序集 Uri uri = new Uri("pack://application:,,,/ResourceFile.xaml", UriKind.Absolute); 子文件夹中的资源文件 — 本地程序集(资源文件