我有一个数据表,我在这里迭代这些项目。对于每个项目,我想要检索该项目的列的Visual
(或UIElement
或FrameworkElement
),即我想使用提供的项目呈现该模板的实例。< / p>
我尝试过使用GetCellContent
,但只返回null
:
foreach (var item in myGrid.ItemsSource) {
DataGridTemplateColumn templateColumn = getMeMyColumnObject();
UIElement content = templateColumn.GetCellContent(item); // always null
// ...
}
似乎有另一个功能可以做我想要的,但它受保护:
protected override FrameworkElement GenerateElement(DataGridCell cell, object dataItem);
templateColumn
对象实际上来自:
foreach (var column in grid.Columns)
{
switch (column)
{
// ...
case DataGridTemplateColumn templateColumn:
// ...
编辑:我已经开始工作,但我不确定为什么。我强烈怀疑修复是以下部分的调用:
grid.Measure(size);
grid.Arrange(new Rect(grid.DesiredSize));
grid.UpdateLayout();