2012-10-25 64 views
0

我试图在WPF中的数据网格控件中添加checkboxcolum。将复选框列添加到DataGrid

我已经在Windows.Forms中完成了这个工作,它工作得很好。

所以现在我想在WPF中为我的将来编写我的新程序。

我想要做的方式: 数据将作为数据集来自数据库。

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

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

是否可能或应该通过datatemplate创建列?

+1

我不认为你可以AutoGenerateColumn做到这一点打开....你必须确定每个列个别 –

+0

好的。这不是我想听到的答案。是否有可能通过从查询获取db字段类型在运行时创建datagrid列。 – thohei

+0

我编辑了你的标题。请参阅:“[应该在其标题中包含”标签“](http://meta.stackexchange.com/questions/19190/)”,其中的共识是“不,他们不应该”。 –

回答

0

您可以向所有本事件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; 
     } 
} 
+0

谢谢Vale!它工作得很好。我认为对于列框,这将是相同的代码,但与DataGridColumnBoxColumn。 – thohei

+0

@thohei是的。你是对的。 – Vale

0

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