@" pack:// application:,,, [...]和IO.Directory.GetCurrentDirectory()之间的区别?

时间:2014-07-08 04:02:00

标签: c# wpf

我注意到当我在XAML文件或C#代码<Window.Background></Window.Background>中添加一行this.Background = new ImageBrush(new BitmapImage(new uri([...]));时,如果我放入&#34; Uri&#34;这个:new Uri(@"pack://application:,,,/Myapp;component/image.jpg")当我尝试编译它时会出现错误:&#34;找不到资源&#34; image.jpg&#34; &#34;

但如果我将其更改为new Uri(System.IO.Directory.GetCurrentDirectory()+"\\image.jpg");,它永远不会给我一个错误。为什么????两种方法有什么区别?我对Directory非常满意,但为什么编译器没有显示错误&#34;定位&#34; IO.Directory的资源?有什么区别?

这些问题可能听起来太棒了,但我不明白为什么它会在@"pack://application[...]而不是GetCurrentDirectory()

中出错

1 个答案:

答案 0 :(得分:2)

pack:// Uri,将搜索嵌入资源以查找图像。资源是内部 DLL / EXE,而不是部署到同一文件夹。要将图像用作WPF资源,您需要将图像上的Build Action设置为Resource

使用Directory方法只需在物理文件系统中搜索图像。

WPF Pack Uri上的更多信息here