当从资源加载时,设置Image.Source不会更新

3

我在XAML中有以下定义:

<Image Name="AlbumArt" Source="/AlbumChooser2;component/Resources/help.png" />

图片在启动时正常显示。

我的代码中,我正在查找要播放的mp3,并在这个中显示相关的专辑封面。现在,如果没有关联的图像,我想显示一个“无图像”图像。因此,我定义了一个并使用以下代码加载它:

BitmapImage noImage = new BitmapImage(
              new Uri("/AlbumChooser2;component/Resources/no_image.png",
                      UriKind.Relative));

我有一个帮助类,如果有图片,它会找到图片并将其作为BitmapImage返回,如果没有图片,则返回null:

if (findImage.Image != null)
{
    this.AlbumArt.Source = findImage.Image; // This works
}
else
{
    this.AlbumArt.Source = noImage; // This doesn't work
}

在找到图像的情况下,源将被更新并显示专辑封面。如果没有找到图像,我将不会看到任何显示——只有一片空白。
我认为问题不在于AlbumArt.Source设置错误,而是BitmapImage的加载有误。
如果我使用另一张图片就可以正常工作(例如原始帮助图片),但即使我重新创建“无图像”图片,它也不起作用。可能出了什么问题?
2个回答

3

一些需要思考/尝试的想法:

Visual Studio中no_image.png的设置是什么?它是一个“嵌入式资源”还是“内容”?您将其设置为“始终复制”还是“仅在更新时复制”?

看起来你正在将图像作为资源引用,但你是否实际将其添加到了项目的资源中?如果它是资源,我认为你应该将其属性设置为“资源”和“不复制”。

如果您将UriKind设置为UriKind.Absolute并将路径设置为磁盘上的实际文件会发生什么?

如果您在设置Source之前在调试器中查看noImage,它肯定是非空的,并且具有正确的宽度/高度吗?


图片已经被加载并且拥有正确的高度和宽度。构建操作为“无” - 将其设置为“资源”解决了问题。 - ChrisF

0

试一下这个

如何在 Wpf 中将 Bitmapimge 绑定到 Image?

当 wpf 编译为 .exe 时,资源目录成为你的 .exe 的一部分,无法从此代码中访问该目录。

BitmapImage noImage = new BitmapImage(
          new Uri("/AlbumChooser2;component/Resources/no_image.png",
                  UriKind.Relative))

所以您必须使用此代码 Resources.no_image.png 并将其转换为 BitmapImage。

谢谢,REV


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