不使用URI的BitmapImage实现XAML ImageBrush

3
我有以下XAML代码,使用URI显示书籍封面图片:
<Rectangle.Fill>
    <ImageBrush ImageSource="{Binding CoverUrl}" />
</Rectangle.Fill>

然而,我想使用的图像并不在磁盘上或通过URI访问; 它来自我解析成BitmapImage对象的二进制文件内部。
当我通过代码创建一个BitmapImage对象时,生成的对象的BaseUriUriSource属性为null。 我如何让ImageBrush使用驻留在内存中的BitmapImage而不是从URI中读取它?
1个回答

4

ImageSource属性的类型为ImageSource,而不是Uri或字符串...实际上,当您将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;
    }
}

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