0
我有一个带有3个值的XML,它们是'name','department','value'。我想要显示一个包含姓名,部门,信用卡和借记卡四栏的数据网格。当“价值”列中的值为正值时,我想在借方列中输入值,在贷方列中输入0,反之亦然。一个值在数据网格中显示两列
我有一个带有3个值的XML,它们是'name','department','value'。我想要显示一个包含姓名,部门,信用卡和借记卡四栏的数据网格。当“价值”列中的值为正值时,我想在借方列中输入值,在贷方列中输入0,反之亦然。一个值在数据网格中显示两列
有几种方法可以解决这个问题。可能最干净的一种方法是添加一个DataGridTemplateColumn以用于信用和借方,将两个列都绑定到“Value”,然后通过使用绑定到“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
}
借记该转换器将是几乎相同,仅与“值> = 0部分”改为“值< 0“当然。
干杯,亚历克斯