WPF XAML Image.Source绑定支持的类​​型

时间:2016-10-23 20:19:10

标签: c# .net wpf xaml

我有这样的xaml:

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

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

奖金:

.NET版本有差异吗?

我不想将XAML绑定到viewmodel。所以请不要像“Image.Source = ...;”这样的代码绑定。

到目前为止我发现了什么:

常识答案:

  • 从ImageSource派生的任何类

MSDN文档几乎没用:

MSDN Image Control

  

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

MSDN Image.Source Property

  

XAML值
     imageUri
     System.String
     图像文件的URI   

我找到的最有用的答案是.net源代码ImageSourceConverter.cs

  • string(Uri-like path)
  • 字节[]
  • 乌里

1 个答案:

答案 0 :(得分:0)

ImageSourceConverter的想法是正确的。一种可能的方法是实现您自己的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}}"/>