我有一个包含3个值的XML,它们是'name','department','value'。我想显示一个包含姓名,部门,信用卡和借记卡等四列的数据网格。当我在'value'列中有一个正值时,我想在借方列中输入值,在信用列中输入0,反之亦然。
答案 0 :(得分:1)
有几种方法可以解决这个问题。可能最干净的是添加DataGridTemplateColumn以进行信用和借记,将两个列绑定到“Value”,然后通过使用绑定来切换显示值的元素的Visibility属性(例如TextBlock)价值“和转换器。 例如:
<DataGrid
AutoGenerateColumns="False">
<DataGrid.Resources>
<converters:ValueToVisibilityConverter
x:Key="ValueToVisibilityConverter" />
</DataGrid.Resources>
<DataGrid.Columns>
<DataGridTemplateColumn
Header="Credit">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock
Text="{Binding Path=Value}"
Visibility="{Binding Path=Value, Converter={StaticResource CreditToVisibilityConverter}}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn
Header="Debit">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock
Text="{Binding Path=Value}"
Visibility="{Binding Path=Value, Converter={StaticResource DebitToVisibilityConverter}}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
信用转换器可能如下所示:
public class CreditToVisibilityConverter : IValueConverter
{
#region IValueConverter Members
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return (double)value >= 0 ? Visibility.Visible : Visibility.Collapsed;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
#endregion
}
借记转换器几乎相同,只是“值&gt; = 0部分”当然改为“值<0”。
干杯,亚历克斯