我无法通过动态生成的列将DataTemplate应用于数据网格中的所有列。 ItemsSource绑定到VM中的DataTable属性。除了模板以外的其他东西都可以正常工作。这些都只是对概念的初步证明,所以数据是垃圾,但需要帮助进行概念验证。DataGridColumnHeader上的DataTemplate WPF C#
代码如下:
查看:
<DataGrid AutGenerateColumns="true" ItemsSource={Binding xxx} etc...>
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.HeaderTemplate>
<DataTemplate>
<Button Content="ok"/>
</DataTemplate>
</DataGridTemplateColumn.HeaderTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
视图模型 - 上的负载,就目前而言,我创建一个表。显然,最终将与DB调用替换...
[ImportingConstructor]
public GenericQueueViewModel()
{
int y = new Random().Next(20);
TestList = createTableForDataGrid(y);
}
private DataTable createTableForDataGrid(int numberOfCols)
{
DataTable test = new DataTable();
for (int i = 0; i < numberOfCols; i++)
{
DataColumn oDc = new DataColumn();
test.Columns.Add(oDc);
}
Random x = new Random();
int y = x.Next(100);
for (int i = 0; i <= y; i++)
{
DataRow oRow = test.NewRow();
for (int j = 0; j < test.Columns.Count; j++)
{
oRow[j] = i.ToString() + " | " + j.ToString();
}
test.Rows.Add(oRow);
}
return test;
}
private DataTable _testList;
public DataTable TestList
{
get { return _testList; }
set
{
_testList = value;
OnPropertyChanged(() => TestList);
}
}
而结果:
这就像与模板最初创建的DataGrid,但是当OnPropertyChanged火灾时,模板不会被调用。网格填充很好,但没有标题中的按钮。
我是否需要使用StaticResource做些事情才能使其发挥作用?将风格拉出网格?我不确定它为什么不起作用。
动态解决方案是强制性的。这是一个队列,将加载“什么”......也许5列,也许200.所以我不能单独定义列。
我刚刚注意到在审查虽然,没有什么是column0产生,这应该是在column0数据在列1,2 1,等... – Aaron 2014-10-01 15:45:53