在 WPF 中显示数据 URL



我正在尝试创建从服务获取数据的WPF应用程序。数据是图像网址。有时,服务会返回数据 URL。

如果我尝试将该 URL 绑定到图像控件,例如:

<Image Source="{Binding URL}" />

它适用于常规 URL,但不显示数据 URL。

有没有办法在 WPF 控件中显示数据 URL?

创建一个值转换器,将 base64 数据转换为BitmapImage

public class DataUrlConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        var data = (string) value;
        var base64Data = Regex.Match(data, @"data:image/(?<type>.+?),(?<data>.+)").Groups["data"].Value;
        var binData = System.Convert.FromBase64String(base64Data);
        var image = new BitmapImage();
        using (var mem = new MemoryStream(binData))
        {
            image.BeginInit();
            image.CreateOptions = BitmapCreateOptions.PreservePixelFormat;
            image.CacheOption = BitmapCacheOption.OnLoad;
            image.StreamSource = mem;
            image.EndInit();
        }
        image.Freeze();
        return image;
    }
    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

然后创建转换器资源:

<Window.Resources>
    <local:DataUrlConverter x:Key="DataUrlConverter"></local:DataUrlConverter>
</Window.Resources>

并像这样使用它:

<Image Source="{Binding URL, Converter={StaticResource DataUrlConverter}}" />

相关内容

  • 没有找到相关文章

最新更新