我添加了一个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#的新手。
答案 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