2009-07-20 49 views
1

正如您所知,Silverlight 3不支持IMultiValueConverter並且...我非常需要它。一個Web服務代理,它定義了我需要在我的UI中顯示的類結構。對象定義類有幾個數組屬性,如string [],int []等。當我將這些屬性綁定到TextBlock時,TextBlock的Text屬性變爲System.String []或System.Int []。相反,我希望看到用逗號分隔的列表字符串或數字。Silverlight 3和IMultiValueConverter

我曾考慮過使用IMultiValueConverter,但Silverlight 3不支持它。我如何解決這個問題?

謝謝

回答

4

IMultiValueConverter的目的是爲了實現支持多個綁定(即MultiBinding對象)轉換器的字符串。在你的情況下,這實際上並不是你所需要的。

如果您想要將數組(例如string[])轉換爲文本值,則只需定義一個正常的IValueConverter即可。不要讓數組包含多個值混淆你的事實。

下面是一個例子轉換器:

[ValueConversion(typeof(string[]), typeof(string))] 
public class StringArrayConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     return string.Join(", ", (string[])value); 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 

希望有所幫助。

0

我沒有看到您的方案中使用多值轉換器。您可以創建一個的IValueConverter這需要數組並返回逗號分隔

<TextBlock Text="{Binding ArrayProperty,Converter={StaticResource stringArrayToString}}" ...