【发布时间】:2014-10-16 18:03:48
【问题描述】:
我有一个这样的 WPF 用户控件...
namespace WpfApplication1
{
public partial class MyControl : UserControl
{
......
}
}
我还有一个包含这个 WPF 用户控件的 win 表单...
namespace WindowsFormsApplication4
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
ElementHost ctrlHost = new ElementHost();
ctrlHost.Dock = DockStyle.Fill;
WpfApplication1.MyControl win = new WpfApplication1.MyControl();
ctrlHost.Child = win;
this.Controls.Add(ctrlHost);
}
}
}
我还有一个带有按钮的家长获胜表单。单击该按钮将打开包含 ElementHost 的 Form1。
namespace WindowsFormsApplication4
{
public partial class Parent : Form
{
public Parent()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form1 form1 = new Form1();
form1.Show();
}
}
}
我的应用程序默认运行父表单...
Application.Run(new Parent());
我面临的问题很奇怪。当我运行应用程序时,父窗体打开,单击按钮时,包含 WPF 控件的子窗口窗体也打开。但是问题是一旦WPF控件窗体弹出,父窗体窗口的大小就会自动缩小(窗口移位,恢复并且控件和字体变小。)。如果我评论“Form1_Load”函数的内容,则父窗口不会缩小。为了检查最坏的情况,我评论了“Form1_Load”中的所有内容,除了
ElementHost ctrlHost = new ElementHost();
线。正如我之前提到的,这条线本身的存在使父窗体缩小。我试图在互联网上广泛搜索这个问题。我无法找到解决方案。请帮我解答。累死了……
【问题讨论】:
-
codeproject.com/Tips/130414/Host-Windows-Form-Controls-in-WPF 请查看此链接,我想请提供您的窗体特定宽度和高度,然后尝试加载您的子用户控件。由于孩子添加内容被添加到您的表单中,并且它知道它需要更多空间,这就是它缩小的原因。
-
感谢您的 cmets Ashok。我尝试为父窗口设置宽度和高度。但是仍然存在同样的问题...
-
这方面有什么进展吗?我有完全相同的问题。
-
有同样的问题。有什么想法吗?
标签: wpf winforms winforms-interop