3

があり、Form(winform)含まれていますElementhost。実行時に、WPF Usercontrols を this にホストしていelementhostます。AutoSize = Trueelementhostに使用しました。

ElementhostWPF Usercontrol のサイズに基づいて自身のサイズを変更します。しかし、ElementHost のサイズに基づいてフォームのサイズを変更する方法。

ありがとうございました、

4

5 に答える 5

2

答えは次のとおりです。

ElementHost.ChildをWPFユーザーコントロールに設定した後。私は次の機能を実行します:

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

投稿された元の方法:WPFサイズを物理ピクセルに変換するにはどうすればよいですか?

次に、クライアントサイズを新しいサイズから設定します。

于 2012-07-20T09:45:01.333 に答える
0

これに対する解決策はありますが、出力についてはわかりません。WPFデスクトップアプリケーションで機能しました。あなたがしなければならないのは、高さと幅をNAN(数字ではなく)に設定することです

this.Width = double.NaN;
this.Height = double.NaN;
于 2012-07-20T07:30:22.173 に答える
0

申し訳ありませんが、サイズの変更をサブスクライブしてホストフォームを更新することはできませんか?

于 2012-07-20T07:00:21.670 に答える