自动调整ElementHost的内容

时间:2011-02-25 19:24:44

标签: wpf winforms elementhost

我有一个小的WPF控件,其TextBlock的TextWrapping设置为Wrap。我试图在现有的WinForms应用程序中托管它。我将ElementHost停靠在表单的顶部,我想根据TextBlock所需的高度调整ElementHost的高度。有没有办法实现这个目标?

2 个答案:

答案 0 :(得分:5)

WinForms的大小调整机制与WPF不同。

您是否尝试过将ElementHost的AutoSize属性设置为true?

答案 1 :(得分: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); 
}