WPF, указывающий, как создаются столбцы, когда они связаны - PullRequest
0 голосов
/ 01 декабря 2018

У меня есть DataGrid, который связывается различными DataTable с.Обнуляемые столбцы boolean преобразуются в DataGridCheckboxColumn.Есть ли способ преобразовать это в текстовый столбец, который показывает да, нет, недоступно?

Ответы [ 2 ]

0 голосов
/ 01 декабря 2018

Если вы хотите сохранить режим автоматической генерации, вы можете подписаться на событие AutoGeneratingColumn из DataGrid и изменить сгенерированный DataGridColumn

private void DataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
    if (e.Column is DataGridCheckBoxColumn dataGridCheckBoxColumn)
    {
        Binding binding = (Binding)dataGridCheckBoxColumn.Binding;
        binding.Converter = new BooleanToStringConverter(); //Converter Klaus Gütter mentioned
        e.Column = new DataGridTextColumn()
        {
            Header = dataGridCheckBoxColumn.Header,
            Binding = binding
        };
    }
}
0 голосов
/ 01 декабря 2018

Вы можете создать конвертер значений и указать его в качестве конвертера.

public class BooleanToStringConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (targetType == typeof(string) && value is bool?)
        {
            var b = (bool?)value;
            if (!b.HasValue)
                return "not available";
            return b.Value ? "yes" : "no";
        }
        return value;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        // implement it if you need two-way binding
        throw new NotImpementedException();
    }
}

В XML создайте его экземпляр в разделе Ресурсы

<local:BooleanToStringConverter x:Key="BooleanToStringConverter" />

и добавьте его впереплет

Binding={"Binding MyColumn, Converter={StaticResource BooleanToStringConverter}}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...