我有一个包含Elementhost的Form(winform)。在运行时,我将我的WPF Usercontrol托管到此elementhost。我已经使用了AutoSize = True作为元素主机。
Elementhost根据WPF用户控件的大小调整自身的大小。而是如何根据ElementHost的大小调整窗体的大小。
谢谢,
发布于 2012-07-20 17:45:01
这就是答案:
将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);
} 原始方法发布于:
现在,我从新的大小设置客户端大小。
发布于 2012-07-20 15:00:22
那么,难道不能订阅size changes并更新主机表单吗?
发布于 2012-07-20 15:30:22
我有一个解决方案,但不确定在WPF桌面应用程序的output.It工作。您需要做的是将高度和宽度设置为NAN (而不是数字)
this.Width = double.NaN;
this.Height = double.NaN;https://stackoverflow.com/questions/11573690
复制相似问题