【问题标题】:Add Checkbox Column to a DataGrid将复选框列添加到 DataGrid
【发布时间】:2012-10-25 20:16:17
【问题描述】:

我正在尝试在 WPF 的数据网格控件中添加一个复选框。

我在 Windows.Forms 中完成了这项工作,效果很好。

所以现在我想在 WPF 中编写我的新程序以备不时之需。

我想做的事情: 数据将来自作为数据集的数据库。

某些字段具有我想显示为复选框的值。 现在我已经将 datagrid autocreatecolumn 设置为 true,将显示数据。

现在我想删除显示值的列并添加一个复选框列。

这可能还是我应该通过数据模板创建列?

【问题讨论】:

  • 我不认为你可以在 AutoGenerateColumn 开启的情况下做到这一点......你必须单独定义每一列
  • 好的。这不是我想听到的答案。是否可以通过从查询中获取 db 字段类型在运行时创建数据网格列。
  • 我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。

标签: c# wpf wpf-controls wpfdatagrid


【解决方案1】:

WPF DataGrid 提供了一个名为 AutoGenerateColumns 的功能,它可以根据数据对象的公共属性自动生成列。它根据值的类型生成以下类型的列,您无需执行任何操作:

1. TextBox columns for string values
2. CheckBox columns for boolean values
3. ComboBox columns for enumerable values
4. Hyperlink columns for Uri values

【讨论】:

    【解决方案2】:

    您可以订阅AutoGeneratingColumn 事件并更改正在生成的列:

    public MyWindow(){
           myDataGrid.AutoGeneratingColumn += AutoGeneratingColumnHandler;
    }
    
    private void AutoGeneratingColumnHandler(object sender, DataGridAutoGeneratingColumnEventArgs e) {
            var bindingPath = ((e.Column as DataGridBoundColumn).Binding as Binding).Path.Path;
            if (bindingPath == "MYPATH") {
                  var checkBoxColumn = new DataGridCheckBoxColumn();
                  checkBoxColumn.Binding = new Binding(bindingPath);
                  e.Column = checkBoxColumn;
            }
     }
    

    【讨论】:

    • 感谢淡水河谷!它工作得很好。我认为对于 columnbox,这将是相同的代码,但使用 DataGridColumnBoxColumn。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-10
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多