如你所知,Silverlight3不支持IMultiValueConverter和...我非常需要它。一个Web服务代理,它定义了我需要在UI中显示的类结构。对象定义类有一些数组属性,如string[]、int[]等。当我将这些属性绑定到TextBlock时,TextBlock的Text属性变成了System.String[]或System.Int[]。相反,我希望看到一个用逗号分隔的字符串或数字列表。
我考虑过使用IMultiValueConverter,但Silverlight3不支持它。我该如何解决这个问题?
谢谢
发布于 2009-07-20 22:01:58
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();
}
}希望这能有所帮助。
发布于 2009-07-20 22:01:01
在你的场景中,我没有看到多值转换器的用法。您可以创建一个IValueConverter,它接受数组并返回逗号分隔的字符串
<TextBlock Text="{Binding ArrayProperty,Converter={StaticResource stringArrayToString}}" ...发布于 2009-07-21 08:23:08
如果你还想使用MultiBinding和IMultiValueConverter,你可以使用this one by Colin Eberhardt。真的很好用。
https://stackoverflow.com/questions/1156177
复制相似问题