【问题标题】:WPF throws "Cannot locate resource" exception when loading the image加载图像时 WPF 抛出“无法找到资源”异常
【发布时间】:2012-08-10 12:57:16
【问题描述】:

我有一个 WPF 窗口,其中包含本地系统中一个文件的背景图像。所以 XAML 文件看起来像这样:

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

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

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

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

【问题讨论】:

  • 你是否设置了对 dll 的引用?
  • 镜像的构建模式? (看到设计师的东西说没什么
  • 谢谢@H.B. ,就像我对答案发表评论一样,我什至没有将图像包含在项目中。我猜设计师和运行时的行为不同对于像我这样的新人来说有点令人困惑。
  • @tete:我根本不推荐使用设计器,我不使用它,因为它很容易产生糟糕的代码,到处都是MarginsAlignments。人们很容易最终使用捕捉,而不是使用不同的面板动态布局。
  • @H.B.因此,您是仅通过代码设计 xaml,还是使用诸如混合之类的设计工具?我实际上使用的是集成了 blend 的 VS12 RC。但我主要是一名编码员,所以我宁愿不学习它,除非我的老板这么说:)

标签: wpf resources


【解决方案1】:

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

【讨论】:

  • 谢谢,问题解决了。我以为它会在运行时加载图片,所以我什至没有将图片包含到项目中。
  • 是的,别忘了清理和重建......正如 Buzz 所说......很容易错过......我做到了:)
  • 呵呵,我们大多数人,包括操作人员,并没有真正遇到过这个属性问题,但是我们没想到如果它已经在物理资源管理器中,它就需要在解决方案资源管理器中拥有图像目录。老实说,它在资源管理器中是必需的,这很酷。谢谢!
  • 难以置信 -- 清理和重建是问题所在!我花了几个小时试图弄清楚这一点,谢谢!
  • 当您访问这样的图像时, 似乎工作正常。但是,如果 Window 位于 WPF 控件库中并且实际上是从 WinForms 项目中运行的,则它会中断。我的解决方案是将路径更改为: 将图像添加到项目后,应立即使用资源构建操作自动设置它们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-08
  • 1970-01-01
  • 1970-01-01
  • 2020-10-22
  • 2023-03-23
  • 1970-01-01
相关资源
最近更新 更多