Uri Pack是什么,BitmapImage中的":,,,"代表什么?

30

当我添加一个Image.Source时,我需要输入以下内容:

playIcon.Source = new BitmapImage(new Uri(@"pack://application:,,,/TempApplication2;component/Images/play.png"));

我从Web开发转向WPF C#,但不明白为什么在WPF中设置路径需要额外的参数,而在CSS中只需添加路径字符串。

有人能解释一下为什么要使用Uri、pack和":,,,"、Application2:component吗?

我是WPF C#新手。

2个回答

57

包URI用于标识和定位应用程序和远程资源、文件。WPF中的包URI使用“pack://authority/path”格式。以下是来自MSDN的解释:“authority指定一个部分所属的包的类型,而path则指定包内的一个部分的位置”。

WPF支持两个authority: application:///siteoforigin:///application:/// authority用于标识资源文件和内容文件。 siteoforigin:/// authority用于标识源站点文件。

“:///”被写成“:,,,”,因为必须使用“,”字符替换“/”字符,并且保留字符(例如“%”“?”)必须进行转义。指向一个包的URI必须符合RFC 2396规范。

有关更多信息,请阅读“Pack URIs in WPF”。

我也在学习WPF。到目前为止,这就是我对WPF中Pack Uri的理解。


1
解释分号的含义也是:

pack://application:,,,/ReferencedAssembly;component/ResourceFile.xaml

如果您想使用引用的dll来引用资源,可以使用以下方法。请记住,ReferencedAssembly是指程序集的名称。还要记住,如果您将ResourceFile.xaml放在ReferencedAssembly的根目录中,则应使用component/ResourceFile.xaml指定路径。因此,您可以看到,通过ReferencedAssembly引用的每个文件都应始终相对于组件文件夹。例如,pack://application:,,,/MyCustomdll;component/MyResource.xaml。
pack://application:,,,/ReferencedAssembly;component/subfolder/ResourceFile.xaml

与上面指定的相似,如果资源放置在程序集中的子文件夹中,则需要根据组件文件夹再次引用该资源。
来源:http://www.abhisheksur.com/2010/04/pack-uri-to-reference-component.html

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接