2016-10-23 142 views
-1

我有XAML這樣的:WPF XAML Image.Source綁定支持的類​​型

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

哪裏是最好的文檔,哪些類型的默認Source屬性(不包括獨立的轉換器)可以結合?

獎金:

是否有.NET版本的區別是什麼?

我不想將XAML綁定到視圖模型。所以請不要使用像「Image.Source = ...;」這樣的代碼綁定。

我發現至今:

常識回答:

  • 從ImageSource的衍生

MSDN文檔的任何類大多是無用的:

MSDN Image Control

Source屬性:獲取或設置圖像的ImageSource。

MSDN Image.Source Property

XAML值
imageUri
System.String
圖像文件

最有用的答案,我發現是在的URI .net源ImageSourceConverter.cs

  • 串(URI狀路徑)
  • 字節[]
  • 烏里
+0

你已經列出的所有類型的屬性可以通過內置類型轉換(由ImageSourceConverter類)綁定到沒有綁定轉換器:'ImageSource','string','Uri','Stream'和'byte []'。對於任何其他源類型,您需要一個綁定轉換器。 – Clemens

+0

這是什麼文件? 即使這裏沒有任何用戶:https://msdn.microsoft.com/en-us/library/system.windows.media.imagesourceconverter(v=vs.110).aspx – jens

+0

雖然WPF是非常有據可查(IMO),仍然存在差距。但也有你已經找到的* Reference Source *。參考那個。 – Clemens

回答

0

的ImageSourceConverter的想法是正確的。一種可能的方法是實現自己的Converter來支持不同類型的源代碼。爲此,我們必須編寫一個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(); 
    } 
} 

通過使用該轉換器的實例,您可以爲對象通過不同的源類型的圖片:

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