【发布时间】:2011-02-25 19:24:44
【问题描述】:
我有一个小的 WPF 控件,它有一个 TextBlock,TextWrapping 设置为 Wrap。我试图在现有的 WinForms 应用程序中托管它。我将 ElementHost 停靠在表单的顶部,我想根据 TextBlock 所需的高度来调整 ElementHost 的高度。有没有办法做到这一点?
【问题讨论】:
标签: wpf winforms elementhost
我有一个小的 WPF 控件,它有一个 TextBlock,TextWrapping 设置为 Wrap。我试图在现有的 WinForms 应用程序中托管它。我将 ElementHost 停靠在表单的顶部,我想根据 TextBlock 所需的高度来调整 ElementHost 的高度。有没有办法做到这一点?
【问题讨论】:
标签: wpf winforms elementhost
WinForms 的大小调整机制与 WPF 不同。
您是否尝试将 ElementHost 的 AutoSize 属性设置为 true?
【讨论】:
ElementHost 设置AutoSize 属性以及为包含ElementHost(在我的情况下为Form)的控件设置AutoSize 对我有用。跨度>
ElementHost 包含在 Panel 中
我找到了答案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);
}
【讨论】: