我注意到当我在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()
答案 0 :(得分:2)
pack://
Uri,将搜索嵌入资源以查找图像。资源是内部 DLL / EXE,而不是部署到同一文件夹。要将图像用作WPF资源,您需要将图像上的Build Action
设置为Resource
。
使用Directory
方法只需在物理文件系统中搜索图像。
WPF Pack Uri上的更多信息here。