【问题标题】:In a DataGrid, how do I make a boolean be represented as "yes/no" instead of a checkbox? [duplicate]在 DataGrid 中,如何将布尔值表示为“是/否”而不是复选框? [复制]
【发布时间】:2012-05-17 11:01:40
【问题描述】:

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

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

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

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

有什么好方法可以做到这一点,还是我在浪费时间?谢谢!

【问题讨论】:

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


    【解决方案1】:
    [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;
        }
    }
    

    【讨论】:

    • 谢谢,这对我有用。我没有使用 CS,所以我不得不做一些思考才能在 VB 中编写这个。我没有找到任何与您的第一行等效的地方,它指定转换器实现的类型,但尽管如此,它还是可以完成工作。
    • 第一行可能是错误的,但它仍然有效,所以我认为这并不重要。
    • 在我的第一条评论之后,我实际上在某处读到,第一行将转换类型指定为开发环境“未来版本”的附加数据,现在根本没有使用。跨度>
    【解决方案2】:

    如果您有一个绑定到 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 上编辑此列。

    【讨论】:

    • 这对我也有用(我也尝试了@Blam 的答案)。这个版本实现起来更简单,但是,就像一个想法,它似乎也不那么“精致”,因为您必须修改底层数据结构以帮助改变它的显示方式。感谢您的帮助!
    • 部分同意。从这个角度来看,它有点混乱,但它使代码的其他一些部分更清晰,因为您不必编写任何额外的代码来显示/格式化结果。
    猜你喜欢
    • 2022-01-07
    • 2018-09-15
    • 2015-02-05
    • 1970-01-01
    • 2012-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多