WPF加载图像时引发“无法找到资源”异常


72

我有一个WPF窗口,本地系统中有一个文件的背景图像。因此,XAML文件如下所示:

 <Window.Background>
    <ImageBrush ImageSource="/MYASSEMBLY;component/Resources/MyPic.png"/>
 </Window.Background>

在XAML设计器中,它实际上显示了此背景图像,因此该图像确实存在于MYASSEMBLY \ Resources文件夹中。但是,在InitializeComponent()启动应用程序的函数调用中,它将引发异常

无法找到资源“ resources / mypic.png”。

所以我现在完全迷路了。设计和运行时目录是否不同,所以运行时中不存在目录?


您是否设置了对dll的引用?
Erno 2012年

图像的构建模式?(看到设计师的东西什么也没说
HB

1
谢谢@HB,就像我评论答案一样,我什至没有将图像包含到项目中。我猜设计师和运行时的行为有所不同,这对于像我这样的新手来说有点令人困惑。
tete 2012年

@tete:我不会recommmend利用设计师的所有,我的,因为它容易产生可怕的代码与一个不使用它Margins,并Alignments在所有的地方。人们很容易最终使用捕捉,而不是按预期使用不同的面板动态地布置事物。
HB

@HB,所以您仅通过代码设计xaml,还是使用诸如Blend之类的设计工具?我实际上正在使用VS12 RC,它集成了混合功能。但是我主要是编码人员,所以除非我的老板这么说,否则我不愿意学习它:)
tete 2012年

Answers:


185

在解决方案资源管理器中,将图像文件的Build Action属性设置为Resource。然后清洗溶液并重新构建。


谢谢,解决了这个问题。我以为它将在运行时中加载图片,所以我什至没有将图像包含到项目中。
tete 2012年

27
是的,别忘了进行清理和重建..正如Buzz所述..很容易错过..我做到了:)
invalidusername 2014年

1
呵呵,我们中的大多数人(包括操作人员)并没有真正遇到该属性问题,但是我们不希望将图像放置在解决方案资源管理器中(如果该图像已经在物理目录中)是必需的。老实说这是资源管理器中必需的,这非常酷。谢谢!
2015年

7
难以置信-清洁和重建是问题所在!我花了几个小时试图弄清楚这一点,谢谢!
Ed Bayiates

与@jriv所说的相呼应,我不得不将文件包括在我的项目中,仅将其包含在文件中是不够的
J King
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.