0

「ステータス」列を含むテーブルからデータを表示しています。現在、この列には 0 と 1 の 2 つの値が含まれています。セル テキスト プロパティをそのテーブルの返されたコレクションにバインドすると、mvvm 構造を使用して 0 => 日次 1 => 月次、 0 と 1 が表示されます。0 の代わりに、Daily と 1 Monthly を表示する必要があります。これを達成する方法はありますか??

4

1 に答える 1

1

そうです、インターフェイスIValueConverterを実装することでバインディング コンバーターを作成できます。

public class IntTextConverter : IValueConverter
{
    // This converts the int object to the string
    // to display 0 => Daily other values => Monthly.
    public object Convert(object value, Type targetType, object parameter,
        System.Globalization.CultureInfo culture)
    {
        // You can test type an value (0 or 1) and throw exception if
        // not in range or type
        var intValue = (int)value;
        // 0 => Daily 1 => Monthly
        return intValue == 0 ? "Daily" : "Monthly";
    }

    // No need to implement converting back on a one-way binding
    // but if you want two way
    public object ConvertBack(object value, Type targetType,
        object parameter, System.Globalization.CultureInfo culture)
    {
        return value == "Daily" ? 0 : 1;
    }
}

Xaml では、 textblock のサンプル バインディング:

<Grid.Resources>
   <local:IntTextConverter x:Key="IntTextConverter" />
</Grid.Resources>
...
<TextBlock Text="{Binding Path=Status, Mode=OneWay,
           Converter={StaticResource IntTextConverter}}" />
于 2013-05-17T07:09:30.917 に答える