如何使用mvvm在datagrid单元格中显示int值的文本

时间:2013-05-17 05:08:50

标签: silverlight mvvm datagrid

我正在显示包含“Status”列的表中的数据,现在此列包含两个值0和1 0 =>日常 1 =>每月一次 通过使用mvvm结构,当我将我的单元格文本属性绑定到该表的返回集合时,它显示0和1。 应该显示我想要的而不是0,每日和每月1。 有没有办法实现这个?

1 个答案:

答案 0 :(得分: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中,文本块上的样本绑定:

<Grid.Resources>
   <local:IntTextConverter x:Key="IntTextConverter" />
</Grid.Resources>
...
<TextBlock Text="{Binding Path=Status, Mode=OneWay,
           Converter={StaticResource IntTextConverter}}" />