【发布时间】:2020-02-28 01:19:58
【问题描述】:
我的解决方案结构如下:
- 类库(名称 = Chess)
- 图像
- Pawn.png
- 图像
- WPF Core 3.1 项目(名称 = ChessApp)
- MainWindow.xaml
我想在图像标记的 MainWindow.xaml 内显示 Pawn.png 图像。 当我的 WPF 项目中有图像文件时,我可以通过相对路径轻松地引用它们。 当资源在不同的项目中时,我无法解决这个问题。
我在 Image 文件夹 a 中的图像具有构建操作 Resource 并且总是被复制到输出目录。 Chess 项目在 ChessApp 中被正确引用。
显然有很多类似的问题,但没有一个答案对我有用。 我都试过了:
URI:How to use Resources of from another project in WPF?
<Image Source="pack://application:,,,/Chess;Component/Images/Pawn.png"></Image>
无 URI:How do I use an image from another project in my XAML?
<Image Source="/Chess;Component/Images/Pawn.png"></Image>
所以我不知道该怎么办。
解决方法:
向一个类添加一个属性,该属性从相对路径中返回图像的完整路径 Path.GetFullPath(@"..\..\..\..\Chess\Images\Pawn.png");
【问题讨论】:
-
从 VS 菜单:添加现有项目。然后浏览器在其他项目中归档。在解决方案资源管理器中找到参考文件并右键单击。然后选择复制选项。您可以使用记事本打开 csproj 文件并进行简单的编辑。
-
那些说明非常不清楚。该库应用作库(dll),用户不必执行其他步骤。
-
请注意,如果构建操作是资源,则不需要将文件复制到输出目录。它们被编译到程序集中。
-
正确的完全合格的资源文件包 URI 应该是
pack://application:,,,/Chess;component/Images/Pawn.png和小写的;component部分。 -
在我的问题中,您可以看到我已经尝试过了,而小写的
component仍然没有解决问题。