WPF XAML图像.源绑定支持的类型

本文关键字:支持 类型 绑定 XAML 图像 WPF | 更新日期: 2023-09-27 18:14:44

我有一个像这样的xaml:

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

Source属性在默认情况下(没有单独的转换器)可以绑定到哪些类型的最佳文档在哪里?

奖金:

.NET版本有区别吗?

我不想在XAML中绑定到视图模型。所以请不要像"图像"这样的代码绑定。

我发现了什么:

常识答案:

  • 任何从ImageSource派生的类

MSDN文档大多是无用的:

MSDN图像控制

Source属性:获取或设置图像的ImageSource。

MSDN的形象。源属性

XAML Values
imageUri
系统。字符串
图像文件的URI

最有用的答案我发现是在。net源imagesourcecconverter .cs:

  • string (Uri-like path)
  • byte []
  • <
  • Uri/gh>

WPF XAML图像.源绑定支持的类型

imagesourcecconverter的想法是正确的。一种可能的方法是实现您自己的Converter来支持不同类型的源。要做到这一点,我们必须编写一个转换器,它将不同的类型转换为ImageSource类型的对象。下面是第一种方法:

[ValueConversion(typeof(object), typeof(ImageSource))]
public class CustomImageConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        ImageSource returnSource = null;
        if (value != null)
        {
            if (value is byte[])
            {
                //Your implementation of byte[] to ImageSource
                returnSource = ...;
            }
            else if (value is Stream)
            {
                //Your implementation of Stream to ImageSource
                returnSource = ...;
            } 
            ...          
        }
        return returnSource;
    }
    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotSupportedException();
    }
}

通过使用这个Converter的实例,您可以将不同的源类型作为对象传递给您的Image:

<Image Source="{Binding MyImage, Converter={StaticResource MyCustomImageConverter}}"/>