什么是Uri Pack,以及BitmapImage中的“:,,,”?

时间:2011-03-22 11:45:06

标签: c# wpf uri imagebrush

我添加了一个Image.Source我必须输入以下内容:

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

我正在从Web开发转向WPF C#,我不明白为什么设置Path有额外的东西,在CSS中我只是添加一个Path字符串。

有人可以解释为什么有Uri,pack和“:,,,”,Application2:组件?

我是WPF C#的新手。

2 个答案:

答案 0 :(得分:46)

包uri用于识别&找到应用程序和远程资源,文件。 WPF中的包uri使用“pack://authority/path”格式。这是来自MSDN的这一行解释了这种格式,'权限指定了包含部件的包的类型,而路径指定了包中部件的位置'

WPF支持两个权限:application:///siteoforigin:///application:///权限标识资源文件,内容文件。 siteoforigin:///权限标识原始站点文件。

":///"写为":,,,",因为"/"字符必须替换为","字符,保留字符如"%"和{{1} }必须转义并指向包的URI必须符合"?"

有关详细信息,请阅读“Pack URIs in WPF

我也在学习WPF。这就是我对WPF中的Pack Uri的理解,直到现在。

答案 1 :(得分:0)

也解释分号:

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

如果您想使用 Referenced 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