2011-02-25 6 views
7

TextBlockとTextWrappingをWrapに設定した小さなWPFコントロールがあります。私はこれを既存のWinFormsアプリケーションでホストしようとしています。私はElementHostをフォームの上部にドッキングさせました。そして、TextBlockが必要とする高さに基づいてElementHostの高さのサイズを設定したいと思います。これを達成する方法はありますか?自動サイズElementHost of content内容:

答えて

5

WinFormsのサイズ変更メカニズムは、WPFと異なります。

ElementHostのAutoSizeプロパティをtrueに設定しようとしましたか?

+0

が、それは何もしません。 –

+0

あなたはこの記事を見ましたか?http://stackoverflow.com/questions/1086184/resize-elementhost-to-size-of-the-hosted-xmal-usercontrol –

+3

ElementHostの 'AutoSize'プロパティを設定すると'と' ElementHost'を含むコントロールの 'AutoSize'も私の場合は' Form'で、私のために働きます。 –

0

私は答えhere

が、これは上記のリンクからのコードですが見つかりました:私の最初に考えた

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); 
} 
関連する問題