RenderTargetBitmap no respeta el ancho de ColumnDefinitions

Necesito crear una instantánea de Grid con algunas columnas ocultas (configurando su ColumnDefinition.Width = 0).

En la pantalla se ve bien, pero el created image tiene todas las columnas visibles (does not respect the ColumnDefinitions). En alguna parte, enrojezco que se debe a que RenderTargetBitmap está mirando una capa diferente donde estos cambios no están presentes (capa visual frente a capa de diseño). ¿Existe alguna posibilidad de obtener una instantánea realista de la cuadrícula con las ColumnDefinitions correctas? No puedo simplemente usar Rectagnel.Fill = VisualBrush, porque necesito almacenar estas imágenes en ciclo (cada iteración = nueva imagen).

Intenté formas como este fragmento

preguntado el 08 de noviembre de 11 a las 18:11

2 Respuestas

Era necesario forzar UpdateLayout() antes de cada instantánea. Cambié los tamaños en el ciclo y el diseño se actualizó demasiado tarde.

respondido 16 nov., 11:18

Llame a este método antes de crear una instantánea de un 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;
}

Respondido 19 Oct 13, 04:10

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.