表格代码:
C#:
Tracker.MyFile[] fileData = tracker.GetFileData();
DataTable fileDataTable = new DataTable();
fileDataTable.Columns.Add("Name", typeof(string));
fileDataTable.Columns.Add("Category", typeof(string));
fileDataTable.Columns.Add("Length", typeof(string));
foreach (Tracker.MyFile file in fileData)
{
DataRow dr = fileDataTable.NewRow();
dr["Name"] = file.DownloadName;
dr["Category"] = file.Category;
dr["Length"] = FormatLength(file.Length);
fileDataTable.Rows.Add(dr);
}
XAML:
<DataGrid Name="dgFiles" AutoGenerateColumns="True" IsReadOnly="True" ItemsSource="{Binding}">
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Name ="Download" Content="Download"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid>
异常:
在使用ItemsSource之前,项目集合必须为空。
现在,异常是否意味着您无法将自定义列添加到已创建的表中?如果是,是否还有其他方法可以添加自定义列?
我尝试的另一件事是通过带有C#Button类的代码向表中添加一个按钮列,但它没有在运行时呈现按钮,只显示了一个显示按钮类型的字符串。
感谢。
答案 0 :(得分:3)
如果你想在DataGrid.Columns下添加一些你必须这样做的列,否则你将它添加到ItemsCollection。
<DataGrid Name="dgFiles" AutoGenerateColumns="True" IsReadOnly="True" ItemsSource="{Binding}">
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Name ="Download" Content="Download"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>