我在XAML中有这个定义:
<Image Name="AlbumArt" Source="/AlbumChooser2;component/Resources/help.png" />
图像在启动时显示OK。
在我的代码中,我正在寻找要播放的mp3,并在此Image
中显示相关的专辑封面。现在,如果没有关联的图像,我想显示“无图像”图像。所以我已经定义了一个并使用以下方法加载它:
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
。
如果我使用不同的图像(例如原始帮助图像),但即使我重新创建“无图像”图像也不起作用。可能有什么不对?
答案 0 :(得分:3)
思考/尝试的一些想法:
no_image.png的Visual Studio设置是什么?它是“嵌入式资源”还是“内容”?您是否将其设置为“始终复制”或“如果更新则复制”?
看起来您将图像作为资源引用,但实际上是否已将其添加到项目的资源中?如果它是一个资源,我相信你应该将它的属性设置为“资源”和“永不复制”。
如果您创建UriKind
UriKind.Absolute
并在磁盘上设置实际文件的路径会怎样?
如果你在调试器中将noImage
设置为Source
,那么它肯定是非空的并且它具有正确的宽度/高度吗?
答案 1 :(得分:0)
试试这个
Binding Bitmapimge to Image in Wpf?
当wpf编译到.exe资源目录成为你的.exe的一部分,你不能从这段代码访问它
BitmapImage noImage = new BitmapImage(
new Uri("/AlbumChooser2;component/Resources/no_image.png",
UriKind.Relative))
所以您必须使用此代码Resources.no_image.png
并将其传递给BitmapImage。
关注REV