2011-02-25 23 views
7

Tengo un pequeño control WPF que tiene un TextBlock con Text Wrapping establecido en Wrap. Estoy tratando de alojar esto en una aplicación WinForms existente. Tengo el ElementHost acoplado a la parte superior del formulario, y me gustaría dimensionar la altura de ElementHost en función de la altura que requiera TextBlock. ¿Hay alguna forma de lograr esto?Tamaño automático ElementHost a su contenido

Respuesta

5

El mecanismo de cambio de tamaño de WinForms es diferente de WPF.

¿Ha intentado establecer la propiedad AutoSize de ElementHost en verdadero?

+0

Eso fue lo primero que pensé, pero no hace nada. –

+0

echó un vistazo a esta publicación: http://stackoverflow.com/questions/1086184/resize-elementhost-to-size-of-the-hosted-xmal-usercontrol –

+3

Configuración de la propiedad 'AutoSize' para' ElementHost 'así como el' AutoSize' para el control que contiene el 'ElementHost', en mi caso un' Form', funciona para mí. –

0

he encontrado la respuesta here

este es el código desde el enlace anterior:

public System.Windows.Size GetElementPixelSize(UIElement element) 
{ 
    Matrix transformToDevice; 
    var source = PresentationSource.FromVisual(element); 
    if (source != null) 
     transformToDevice = source.CompositionTarget.TransformToDevice; 
    else  
     using (var Hwndsource = new HwndSource(new HwndSourceParameters())) 
      transformToDevice = Hwndsource.CompositionTarget.TransformToDevice; 


    if (element.DesiredSize == new System.Windows.Size()) 
     element.Measure(new System.Windows.Size(double.PositiveInfinity, double.PositiveInfinity)); 

    return (System.Windows.Size)transformToDevice.Transform((Vector)element.DesiredSize); 
} 
Cuestiones relacionadas