RenderTargetBitmap не учитывает ширину ColumnDefinitions

Мне нужно создать снимок сетки с некоторыми скрытыми столбцами (установив его ColumnDefinition.Width = 0).

На экране все выглядит нормально, но у created image все столбцы видны (does not respect the ColumnDefinitions). Я где-то красный, потому что RenderTargetBitmap смотрит на другой слой, где этих изменений нет (визуальный слой против слоя макета). Есть ли шанс получить реалистичный снимок сетки с правильными определениями столбцов? Я не могу просто использовать Rectagnel.Fill = VisualBrush, потому что мне нужно хранить эти изображения в цикле (каждая итерация = новое изображение).

Я пробовал такие способы, как этот фрагмент


person karel    schedule 08.11.2011    source источник


Ответы (2)


Требовалось принудительно UpdateLayout() перед каждым снимком. Я поменял размеры в цикле, и макет обновился слишком поздно.

person karel    schedule 16.11.2011

Вызовите этот метод перед созданием снимка UIElement:

public static UIElement GetMeasuredAndArrangedVisual(UIElement visual)
{
    visual.Measure(new Size
    {
        Height = double.PositiveInfinity,
        Width = double.PositiveInfinity
    });

    visual.Arrange(new Rect(0, 0, visual.DesiredSize.Width, visual.DesiredSize.Height));

    visual.UpdateLayout();

    return visual;
}
person Pascalsz    schedule 06.03.2012