Windows窗体应用程序中托管的WPF UserControl中的资源URI

时间:2018-11-21 10:27:08

标签: wpf xaml wpf-controls windowsformsintegration

我有一个WPF UserControl,它使用一些PNG位图资源作为其UI的一部分。当前,这些文件使用 Build Action:Content Copy to Output Directory:Not copy 引用。此UserControl上的元素正在使用以下URI来访问资源: pack://application:,,,Resources/ui/Cross.png在设计器中效果很好。

然后,通过ElementHost控件在Windows窗体应用程序中使用该用户控件,此时所有图像链接均停止工作。 UserControl位于它自己的程序集中,而Windows Forms应用程序正在引用该程序集。

我还尝试将URI更改为此:pack://application:,,,Assembly.Name;component/Resources/ui/Cross.png

我进一步尝试阅读this毫无帮助。

我剩下的唯一选择是包括代码来手动设置用户控件上所有Image元素的ImageSource,这将需要大量工作。我觉得一定有办法更好地解决这个问题。

1 个答案:

答案 0 :(得分:1)

  

构建操作:内容和复制到输出目录:请勿复制

该组合无效。 Content要求复制文件。

但是,您应该使用Build Action Resource。并且您的Pack URI在,,,之后缺少斜杠。

应该是

pack://application:,,,/AssemblyName;component/Resources/ui/Cross.png

假设图像文件是Visual Studio Project的一部分,该文件位于名为ui的项目文件夹中名为Resources的子文件夹中。

有关详细信息,请参见Resource File Pack URIs