BitmapImage在EndInit()上抛出NotImplementedException

时间:2017-10-11 18:32:21

标签: c# wpf

我正在尝试从WPF窗口中的文件加载位图图像,但是我在下面的EndInit()行上抛出异常

BitmapImage img = new BitmapImage();
img.BeginInit();
img.CacheOption = BitmapCacheOption.OnLoad;
img.UriSource = PackUriHelper.Create(new Uri(@"pack://application:,,,/Images/TestImage.png", UriKind.Absolute));
img.EndInit();
img.Freeze();

异常堆栈跟踪:stack trace

有什么想法吗?如果它与所有这些相关,则WPF窗口将托管在本机应用程序中。

1 个答案:

答案 0 :(得分:0)

我现在已经开始工作 - 我相信这个例外被抛出,因为我试图在加载任何xaml资源之前解析/加载BitmapImage。我强制将BitmapImage初始化为绑定的Image属性的getter,它不再抛出。

我还注意到我能够正确地从XAML本身解析pack:// URI。

private BitmapImage _listIcon;
public BitmapImage ListIcon
{
    get
    {
        if (_listIcon == null)
        {
            _listIcon = ProvideListIcon();
        }

        return _listIcon;
    }
}

protected override BitmapImage ProvideListIcon()
{
    BitmapImage img = new BitmapImage(new Uri("pack://application:,,,/[Project];Component/Images/TestImage.png", UriKind.RelativeOrAbsolute));
    if (img.CanFreeze)
    {
        img.Freeze();
    }

    return img;
}