2009-07-20 48 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}}" ...