从DataGridColumnTemplate中检索网格单元的UIElement

时间:2017-09-28 06:12:30

标签: c# wpf data-binding

我有一个数据表,我在这里迭代这些项目。对于每个项目,我想要检索该项目的列的Visual(或UIElementFrameworkElement),即我想使用提供的项目呈现该模板的实例。< / 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();

0 个答案:

没有答案