Есть несколько способов решить эту проблему. Вероятно, наиболее чистым было бы добавить DataGridTemplateColumn для кредита и дебета, связать оба столбца со значением «Значение» и затем переключить свойство 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». </p>
Ура, Алекс