WPF使用Winform自定义控件

Posted guhuazhen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF使用Winform自定义控件相关的知识,希望对你有一定的参考价值。

在WPF的用户控件中使用Winfrom自定义控件的过程:

1、添加引用

WindowsFormsIntegration.dll

System.Windows.Forms.dll

2、在要使用WinForm控件的WPF窗体的XAML文件中添加如下内容:

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

如下图所示:

技术图片

 

 

 

 

3、 在WPF的容器控件内如StackPanel内首先要添加WinForm控件的宿主容器,用于衔接WPF和WinForm,

对应XAML如下:

说明:<wfi:WindowsFormsHost></wfi:WindowsFormsHost>即为WinForm控件的宿主容器,每一个宿主容器只能放一个WinForm控件,如下例,放了三个WinForm控件,分别放在三个宿主容器里面,该容器可以设置属性来调整大小和布局

注意:如上我添加的WinForm控件如在指定其Name时,必须加前缀x:,如添加Lable时<wf:Label x:Name="wpfLabel" Text="我是WPF中的WinForm控件” />,否则后台代码无法访问。

<local:UserControl1 Name="Header" Width="319" Height="30"></local:UserControl1>这个为Winform自定义控件。


<StackPanel>
  <wfi:WindowsFormsHost>
    <local:UserControl1 Name="Header" Width="319" Height="30"></local:UserControl1>
  </wfi:WindowsFormsHost>    
  <wfi:WindowsFormsHost>  
    <wf:Label x:Name="wfLabel" Text="winForm控件在此" />     
  </wfi:WindowsFormsHost>
</StackPanel>

4、 如果要在WPF后台代码中访问上面的Lable,可直接像在WinForm中使用一样。

 

ok,今天的分享就到这里了,有疑问欢迎指导。

以上是关于WPF使用Winform自定义控件的主要内容,如果未能解决你的问题,请参考以下文章

WinForm中调用WPF控件

请教关于WPF上自定义控件添加事件的问题

winform中自带的pageSetupDialog和printDocument控件

我在wpf中使用了自定义的控件,请问如何为自定义控件中的一个按钮设置快捷键?

C#中如何实现WPF调用Winform中用户自定义的控件呢?

wpf 自定义控件combobox 依赖属性