【问题标题】:Auto size ElementHost to its content根据其内容自动调整 ElementHost
【发布时间】:2011-02-25 19:24:44
【问题描述】:

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

【问题讨论】:

    标签: wpf winforms elementhost


    【解决方案1】:

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

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

    【讨论】:

    • 这是我的第一个想法,但它没有任何作用。
    • 你看过这篇文章了吗:stackoverflow.com/questions/1086184/…
    • ElementHost 设置AutoSize 属性以及为包含ElementHost(在我的情况下为Form)的控件设置AutoSize 对我有用。跨度>
    • @MikedeKlerk 谢谢,这就像一个魅力,在我的情况下,ElementHost 包含在 Panel
    • @MikedeKlerk 在我的情况下我将“AutoSize”设置为“ElementHost”和“Form”第一次加载窗口表单大小大于我的控件大小
    【解决方案2】:

    我找到了答案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); 
    } 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-01
      • 1970-01-01
      • 2018-12-21
      • 2016-10-28
      • 1970-01-01
      相关资源
      最近更新 更多