首页 > 解决方案 > WPF 指定绑定时如何生成列

问题描述

我有一个DataGrid被各种DataTables 绑定的。可为空的boolean列被转换为DataGridCheckboxColumn. 有没有办法将其转换为显示是、否、不可用的文本列?

标签: c#wpf

解决方案


您可以创建一个值转换器并将其指定为 Converter 的绑定。

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 中,在 Resources 中创建它的一个实例

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

并将其添加到绑定中

Binding={"Binding MyColumn, Converter={StaticResource BooleanToStringConverter}}"

推荐阅读