我無法通過動態生成的列將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