如何在WPF应用程序中放置自定义Windows窗体控件?

作为一个短期解决方案,我试图将Windows窗体’usercontrol’堵塞到WPF应用程序中。 我在WPF应用程序视图中看到我可以向项目添加“自定义窗体控件”,它会创建一个空的自定义控件,但我无法弄清楚如何添加它。 理想情况下,我想知道如何从我编译的Windows窗体用户控件中获取.dll并将其粘贴到WPF应用程序中,或将用户控件导入WPF应用程序。

谢谢,山姆

您无法像在Windows窗体应用程序中那样将其作为控件添加到工具箱中。 你应该做的是“托管”WPF应用程序内部的用户控件。

了解如何在MSDN上执行此操作 。

以下是如何使用屏蔽文本框(您可以轻松修改以使用自定义控件)的示例:

       

将System.Windows.Forms和WindowsFormsIntegration的引用添加到项目中

 xmlns:WinForms="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms" xmlns:WindowsFormsIntegration="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration" 

并将Windows窗体主机放在窗口中。

     

现在用C#代码

 using Forms = System.Windows.Forms; ......................... Forms.FlowLayoutPanel flpPanel = this.wfhDate.Child as Forms.FlowLayoutPanel; // Initialize your Forms contol here. flpPanel.Controls.Add( yourControl ); 

卢卡斯的回答是正确的,但我想补充一些必要的东西。 如果要创建Web应用程序,则必须将“安全性”设置更改为“这是完全信任的应用程序”。 在执行此操作之前,我无法使WindowsFormsHost控件正常工作。