我正在使用DataGrid和AutoGenerateColumns =“True”。 现在除了自动生成的列,我想添加一个我的“自定义”列,即所谓的“服务”列。 (在其中我想要几个超链接“开始”“停止”“重置”)。
如何添加添加列?
我发现此页面http://msdn.microsoft.com/ru-ru/library/system.windows.controls.datagrid.autogeneratecolumns.aspx描述了如何修改或删除列,但我找不到如何添加列。
答案 0 :(得分:8)
您应该可以像往常一样在设计师中添加列。它只会将该列附加到所有生成的列。
修改强>
抱歉,我假设了WinForms。同样的想法,只需将列直接添加到XAML:
<DataGrid AutoGenerateColumns="True" ItemsSource="{Binding Src}" x:Name="Grid">
<DataGrid.Columns>
<DataGridCheckBoxColumn Header="Junk"></DataGridCheckBoxColumn>
<DataGridHyperlinkColumn Header="Junk2"></DataGridHyperlinkColumn>
</DataGrid.Columns>
</DataGrid>
这是ViewModel:
public class ViewModel
{
public ViewModel()
{
Src = new ObservableCollection<Item>() { new Item { Id = 1, Name = "A" }, new Item { Id = 2, Name = "B" } };
}
public ObservableCollection<Item> Src { get; set; }
}
public class Item{
public int Id { get; set; }
public string Name { get; set; }
}
这就是它所显示的内容:
答案 1 :(得分:3)
您可以使用<DataGrid.Columns>
在XAML中添加它,也可以在代码中添加。
请记住,如果你在XAML中这样做,默认情况下它会将列放在列的开头,即在它们生成之前。
或者,您可以在代码中添加它,并专门使用事件AutoGeneratedColumns
及其中的代码,它将显示为最后一列。
答案 2 :(得分:0)
您是否有用作数据源的数据集?
如果是这样,更简单的方法是在Visual Studio GUI中添加列,将Name和DataPropertyName设置为您可以识别的内容,然后将该列添加到DataSet中,
//Assumes you added a column that you named 'clNew'
//Assumes you have one table in your dataset that the DGV is bound to
clNew.Name = "clNew";
clNew.DataPropertyName = "clNew";
ds.Tables[0].Columns.Add("clNew");
列现在位于数据集中,因此如果您遍历数据行,您也可以在那里访问它。