DataGrid中的转换器

时间:2012-08-10 13:28:19

标签: wpf converter

我有一个DataGrid,里面有两列 第一个:LimitType和 第二个:是LimitValue。

例如: 第一列:0 - 如果是Money类型,则为1 - 如果是百分比类型 第二列应该:如果第一列中的0显示货币格式的值,否则显示为百分比格式。

如何根据第一列值格式化第二列。 我尝试使用Converter来做,但我不能作为参数传递第一列的值......

2 个答案:

答案 0 :(得分:0)

您可以尝试在DataGrid的列定义中绑定对象本身。

我正在考虑这样的事情:

  <DataGridTextColumn Header="Value" Binding="{Binding Converter={StaticResource valueFormatConverter}}" />

但是没有参数的简单Binding似乎没有像我期望的那样直接绑定到对象,所以也许使用一个技巧并在你的类中添加一个引用该对象本身的成员。

public class DummyClass
{
    public int Type { get; set; }
    public int Value { get; set; }
    public DummyClass MySelf { get; set; }
}

然后你可以在绑定中使用它:

<DataGridTextColumn Header="Value" Binding="{Binding MySelf, Converter={StaticResource valueFormatConverter}}" />

这是转换器:

public class ValueFormatConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        var v = (MainWindow.DummyClass)value;

        if (v.Type == 0)
        {
            return v.Value + " (Type 0)"; // Do your formatting here
        }
        else if (v.Type == 1)
        {
            return v.Value + " (Type 1)";  // Do your formatting here
        }
[...]

答案 1 :(得分:0)

我找到了一个解决方案。

DataGridTextColumn应绑定到两个值的MultiplyBinding类型 - 从第一列和第二列。