2011-02-25 12 views
7

Ho un piccolo controllo WPF che ha un TextBlock con TextWrapping impostato su A capo. Sto cercando di ospitare questo in un'applicazione WinForms esistente. Ho l'ElementHost agganciato alla parte superiore del modulo e vorrei ridimensionare l'altezza di ElementHost in base all'altezza richiesta da TextBlock. C'è un modo per realizzare questo?Auto size ElementHost al suo contenuto

risposta

5

Il meccanismo di ridimensionamento di WinForms è diverso da quello di WPF.

Si è tentato di impostare la proprietà AutoSize di ElementHost su true?

+0

Questo è stato il mio primo pensiero, ma non fa nulla. –

+0

Hai dato un'occhiata a questo post: http://stackoverflow.com/questions/1086184/resize-elementhost-to-size-of-the-hosted-xmal-usercontrol –

+3

Impostazione della proprietà 'AutoSize' per' ElementHost 'così come' AutoSize' per il controllo che contiene il 'ElementHost', nel mio caso un' Form', funziona per me. –

0

ho trovato la risposta here

questo è il codice dal link qui sopra:

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); 
} 
Problemi correlati