RenderTargetBitmap не учитывает ширину ColumnDefinitions - PullRequest
0 голосов
/ 08 ноября 2011

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

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

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

Ответы [ 2 ]

1 голос
/ 06 марта 2012

Вызовите этот метод перед созданием снимка 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;
}
1 голос
/ 16 ноября 2011

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

...