我有一个 DataGrid 和里面的两列。
第一个:LimitType,第二个:LimitValue。
例如: 第一列:0 - 如果是货币类型,1 - 如果是百分比类型 第二列应该:如果第一列中为 0,则以货币格式显示值,否则以百分比格式显示值。
如何根据第一列值格式化第二列。我尝试使用转换器来做到这一点,但我不能将第一列的值作为参数传递......
我找到了解决方案。
DataGridTextColumn 应该绑定到 MultiplyBinding 类型的两个值 - 从第一列和第二列。
您可以尝试在 DataGrid 的列定义中绑定对象本身。
我正在考虑类似的事情:
<DataGridTextColumn Header="Value" Binding="{Binding Converter={StaticResource valueFormatConverter}}" />
但是没有参数的简单绑定似乎并没有像我期望的那样直接绑定到对象,所以也许可以使用一个技巧并将一个成员添加到引用对象本身的类中。
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
}
[...]