WPF 跨程序集的文件资源使用

BitmapImage  imageSource = new BitmapImage();
            imageSource.BeginInit();
            imageSource.UriSource = new Uri("pack://application:,,,/NewautoCore;component/Images/Time_icon_cursor.png", UriKind.Absolute);
            imageSource.EndInit();

 

 

http://hi.baidu.com/ft2130854/blog/item/d207c14fff1e4a18b3de05c8.html


转自:http://www.cnblogs.com/hanye/archive/2010/01/18/1651097.htmlMSDN:WPF 中的 Pack URIWindows Presentation Foundation 中的 Pack URI更新:2007 年 11 月

在 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);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值