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

问题描述 投票:0回答:1

因此,我将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))
c# wpf vb.net user-controls embedded-resource
1个回答
1
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.