当我将WPF UserControl用于其内置项目以外的项目时,我的WPF UserControl无法找到资源

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当我将WPF UserControl用于其内置项目以外的项目时,我的WPF UserControl无法找到资源相关的知识,希望对你有一定的参考价值。

因此,我将WPF用户控件构建为较大解决方案的一部分。我正在构建另一个应用程序,该用户控件可以很好地工作。我在新应用程序中添加了对DLL的引用,将其连接并编译。窗口加载,我可以看到它告诉我找不到的图像。在显示主窗口并填充用户控件后,引发异常,说明...

System.IO.IOException:'无法找到资源'resources / nosortnofilter.png'。]

用户控件是一个DataGrid,其中添加了一些扩展。它抛出的列是“ id”。如您在图像中看到的,红色箭头显示了在所有列中显示的nosortnofilter.png图像。那么为什么会抛出此异常?

Exception

它引发的代码行在这里。

If ImageName = "" Then ImageName = "NoSortNoFilter"
img.Source = New BitmapImage(New Uri("pack://application:,,,/Resources/" & ImageName & ".png"))

enter image description here

因此,从我的角度来看,一切看起来都不错。希望有人可以看到我没看到的内容。

编辑:找到了solution。这可行。但是它仍然不能回答为什么原始的pack://格式的URI只适用于原始解决方案的问题。

img.Source = New BitmapImage(New Uri($"Resources/ImageName.png", UriKind.Relative))
答案

这是应用程序程序集中资源的URI:

pack://application:,,,/Resources/

要在DLL中获取资源,URI看起来更像这样:

pack://application:,,,/[DLLNAME];component/Resources/

以上是关于当我将WPF UserControl用于其内置项目以外的项目时,我的WPF UserControl无法找到资源的主要内容,如果未能解决你的问题,请参考以下文章

WPF 剪辑矩形

数据绑定到 WPF 中的 UserControl

“UserControl”类型不支持直接内容

WPF 导航和销毁当前 UserControl

在WPF中UserControl

WPF中UserControl中DesignWidth和Width的区别