【问题标题】:wpf documentviewer throws exception on mouse over image [duplicate]wpf documentviewer在鼠标悬停图像时抛出异常[重复]
【发布时间】:2017-09-15 12:24:36
【问题描述】:

我有一个固定文档,其中有一张图片。图像的源属性绑定到文档数据上下文中的字节数组(从数据库中读取)。当我将鼠标移到图像上时,我得到一个 filenotfoundexception。

看起来文档查看器试图从工作目录中名为“image”的文件加载有关渲染图像的附加信息,该文件当然不存在。

有人知道如何禁用此行为吗?

【问题讨论】:

  • 我们需要有关您的问题的更多信息,最重要的是您如何将图像分配给控件。我通常使用转换器并将字节数组转换为位图并将其返回用于图像控件。
  • 当前图像的源属性直接绑定到字节数组: public byte[] PassPhoto { get { return this.person.PassPhoto; } } 我会试试你的解决方案...
  • 尝试使用转换器并将该字节数组转换为位图。 more info here
  • 将字节数组转换为位图不起作用(未显示图像),但转换为 ImageSource 可以。感谢您为我指明正确的方向
  • 您是否将位图的缓存选项设置为OnLoad?喜欢this post shows

标签: wpf image exception mouse documentviewer


【解决方案1】:

您可以使用以下转换器从字节数组创建 BitmapImage:

public class BytesToBitmapConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        var bytes = (byte[])value; // make sure it is an array beforehand

        using (var ms = new System.IO.MemoryStream(bytes))
        {
            var image = new BitmapImage();
            image.BeginInit();
            image.CacheOption = BitmapCacheOption.OnLoad;
            image.StreamSource = ms;
            image.EndInit();
            return image;
        }
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return value;
    }
}  

然后在你的 xaml 中你会像这样使用它:

<Image Source="{Binding propertyNameHere, Converter={StaticResource converterName}}"/>

【讨论】:

    猜你喜欢
    • 2015-03-21
    • 2015-10-24
    • 1970-01-01
    • 2020-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-12
    相关资源
    最近更新 更多