我有以下XAML,它使用URI显示图书的封面图片:
<Rectangle.Fill>
<ImageBrush ImageSource="{Binding CoverUrl}" />
</Rectangle.Fill>
但是,我想要使用的图像不在任何地方的磁盘上,也不能通过URI访问;它来自我解析为BitmapImage
对象的二进制文件。
当我通过代码创建BitmapImage
对象时,生成的对象的BaseUri
和UriSource
属性为空。如何让ImageBrush
使用驻留在内存中的BitmapImage
而不是从URI中读取它?
答案 0 :(得分:4)
ImageSource属性的类型为ImageSource,而不是Uri或string ...实际上,当您为其分配Uri时会发生转换。您可以将ImageBrush直接绑定到返回ImageSource
的属性<Rectangle.Fill>
<ImageBrush ImageSource="{Binding Cover}" />
</Rectangle.Fill>
private ImageSource _cover;
public ImageSource Cover
{
get
{
if (_cover == null)
{
_cover = LoadImage();
}
return _cover;
}
}