Одно значение отображает два столбца в сетке данных - PullRequest
0 голосов
/ 25 мая 2010

У меня есть XML с 3 значениями, это «имя», «отдел», «значение».Я хочу отобразить сетку данных с четырьмя столбцами, такими как Имя, Отдел, Кредит и Дебет.Когда у меня есть положительное значение в столбце «значение», я хочу ввести значение в столбце дебетования и 0 в столбце кредита и наоборот.

1 Ответ

1 голос
/ 25 мая 2010

Есть несколько способов решить эту проблему. Вероятно, наиболее чистым было бы добавить 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>

Ура, Алекс

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...