2011-02-25 4 views
7

J'ai un petit contrôle WPF qui a un TextBlock avec TextWrapping défini pour Wrap. J'essaye d'héberger ceci dans une application existante de WinForms. J'ai le ElementHost amarré au sommet du formulaire, et je voudrais dimensionner la taille de l'ElementHost en fonction de la hauteur que le TextBlock exige. Y a-t-il un moyen d'accomplir cela?Taille automatique ElementHost à son contenu

Répondre

5

Le mécanisme de redimensionnement de WinForms est différent de celui de WPF.

Avez-vous essayé de définir la propriété AutoSize de ElementHost sur true?

+0

Ce fut ma première pensée, mais il ne fait rien. –

+0

Avez-vous regardé ce post: http://stackoverflow.com/questions/1086184/resize-elementhost-to-size-of-the-hosted-xmal-usercontrol –

+3

Définition de la propriété 'AutoSize' pour le' ElementHost 'ainsi que le' AutoSize' pour le contrôle qui contient le 'ElementHost', dans mon cas un' Form', travaille pour moi. –

0

Je trouve la réponse here

ce code est en cliquant sur le lien ci-dessus:

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); 
} 
Questions connexes