在DataGrid中,如何将布尔值表示为“是/否”而不是复选框?

时间:2012-05-08 22:28:44

标签: wpf vb.net binding .net-4.0 datagrid

  

可能重复:
  WPF: Display a bool value as “Yes” / “No”

我正在VB.Net 2010(.NET 4.0)中编写一个WPF程序,该程序对一个简单的类使用数据绑定,该类是我编写的另一个简单类的ObservableCollection。到目前为止,我有一个DataGrid显示信息,我可以根据需要添加和删除项目,但我似乎有一个相当基本的概念绊脚石:

除了各种DataGrid列允许的默认行为外,我如何以某种方式显示数据?

我的原始类中有一个名为“reverse”的布尔值,我们称之为“x”。我希望显示ObservableCollection“x”的DataGrid在Reversed列下显示“Yes”或“No”,而不是选中或取消选中的复选框(DataGridCheckBoxColumn)。

有没有一种很好的方法可以做到这一点,还是我在浪费时间?谢谢!

2 个答案:

答案 0 :(得分:3)

[ValueConversion(typeof(bool), typeof(string))]
public class FlopBoolean : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (bool)value return "yes"; 
        return "no";
    }
    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {

       return true;
    }
}

答案 1 :(得分:0)

如果您拥有绑定到DataView或DataGridView的对象集合,则可以创建属性并在数据网格中显示该属性。例如:

Public Class Example
     <Browsable(False)> Public Property isLinked As Boolean

     <DisplayName("Linked")> Public ReadOnly Property LinkedDisplay As String
        Get
            If isLinked Then
                Return "Yes"
            Else
                Return "No"
            End If
        End Get
    End Property
End Class

它的缺点是您无法在datagridview上编辑此列。