2009-07-20 13 views
1

ご存知の通り、Silverlight 3はIMultiValueConverterをサポートしていません。私のUIに表示する必要があるクラス構造を定義するWebサービスプロキシです。オブジェクト定義クラスには、string []、int []などの配列プロパティがいくつかあります。これらのプロパティをTextBlockにバインドすると、TextBlockのTextプロパティはSystem.String []またはSystem.Int []になります。代わりに、カンマで区切られたリスト文字列または数字を表示したいと思います。Silverlight 3とIMultiValueConverter

私はIMultiValueConverterを使用することを考えましたが、Silverlight 3はそれをサポートしていません。これを回避するにはどうしたらいいですか?

おかげ

答えて

4

カンマ区切りの文字列を返すことができます。あなたの場合、これは実際に必要なものではないようです。

アレイ(たとえば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を作成し、あなたにIMultiValueConverterの目的は複数のバインディング(すなわちMultiBindingオブジェクト)をサポートしてコンバータを実装することです

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

さらに、マルチバインディングとIMultiValueConverterを使用したい場合は、this one by Colin Eberhardtです。本当にうまく動作します。

関連する問題