在 C# WPF .NetCore WPF 应用程序中添加图像时遇到问题。

3

为了使一个WPF .NetCore应用程序的用户界面更加丰富,我想添加一张图片。我在XAML中使用以下代码实现该功能。

<Image Source="images/myimage.png" Height="100" Width="100" Margin="20,20,0,0"/>

通常情况下,在执行应用程序时,代码应该在UI中显示我的图像,但不知何故,UI保持为空白。对我来说,令人惊讶的是,VS的图形化XAML编辑器显示了该图像。

我也尝试了使用.Net Framework做同样的操作,一切都很顺利。我还检查了图像是否未被声明为资源的情况,但这在我的情况下并不是解决方案。

2个回答

3
解决这个问题的方法是检查以.csproj结尾的项目文件,如下所示。
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
    <PropertyGroup>
        <OutputType>WinExe</OutputType>
        <TargetFramework>netcoreapp3.1</TargetFramework>
        <UseWPF>true</UseWPF>
    </PropertyGroup>
</Project>

正如您所看到的,图片的声明仍然缺失。因此,您需要在上面的代码中添加以下行。

<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
    <PropertyGroup>
        <OutputType>WinExe</OutputType>
        <TargetFramework>netcoreapp3.1</TargetFramework>
        <UseWPF>true</UseWPF>
    </PropertyGroup>

    <ItemGroup>
        <Resource Include="images/myimage.png" />
    </ItemGroup>
</Project>

请注意,本帖是我早前发布的一篇文章的复制品。这是我的解决方案,所以我不认为这是最佳实践。但我认为它可能对其他人有所帮助,这就是为什么我第二次发布它的原因。


3
如果你通过添加->现有项目...将图像文件添加到项目中,VS会为你生成这个。你也可以写<ItemGroup> <Resource Include="images\*" /> </ItemGroup>来包含那个目录下的所有图像。 - Clemens
@Clemens 我知道,其实应该是这样的。但在我的情况下却不是这样的。当我创建一个文件夹,然后从文件浏览器中将图像拖到项目树中时,项目文件中什么都没有发生。我的意思是,你之前帮过我,所以你了解我的问题,但还是谢谢你的建议! :) - lpsweder
尝试使用打包URI来定位图像。 - Lingam
1
正如其他答案所述,如果您将“生成操作”设置为“资源”,则VS将在项目文件中生成相应的条目。 - Clemens
@Clemens 我知道你的意思,但我已经尝试过这个方法了,而且在两台不同的机器上都使用了最新版本的VS-CE和.NetCore,但项目文件中什么也没有发生...我知道这不应该发生,但不知怎么回事对我来说它并没有起作用!我猜直接从VS外部将图片拖到树形结构中可能是问题所在。 - lpsweder

2

在将图像添加到项目中时,您必须确保该图像文件的“生成操作”属性设置为Resource。默认情况下,它将被设置为None

这与.NET Framework项目不同,其中图像文件的默认值已经是Resource


是的,我试过了... 但不知何故,在VS社区版中,项目文件保持不变。我不知道为什么它没有起作用,但我确实按照你说的做了,却没有任何反应。 - lpsweder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接