前言
在wpf中使用winform控件或者winform的自定义控件
一、添加引用
WindowsFormsIntegration.dll
System.Windows.Forms.dll
提示:这两个引用都是在程序集中可以直接找到的
二、在要使用WinForm控件的WPF窗体的XAML文件中添加如下内容:
代码如下(示例)
xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"xmlns:wfi ="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration"
三、在WPF中使用WinForm或自定义控件
xaml文件代码如下(示例)
<Grid Grid.Row="1"><DockPanel Name="m_panel"><WindowsFormsHost x:Name="host" Margin="0,0,0,0" /></DockPanel></Grid>
在代码中定义UserControl1 user= new UserControl1 (); 这里不要忘记添加引用。
UserControl1 是我的自定义控件
然后再将控件放入WindowsFormsHost 中,使用这句代码 : host.Child = user;
四、在WPF中使用WinForm控件
xaml文件代码如下(示例)
<Grid Grid.Row="1"><wfi:WindowsFormsHost><wf:Label x:Name="wfLabel" Text="winForm控件在此" /> </wfi:WindowsFormsHost></Grid>
补充
在WPF中使用WinForm或自定义控件,如果出现设置了控件,也没有报错,但是控件就是不显示,多半是AllowTransparent = “True”这句话出来问题,只需要将True改成False就可以了,如果一定要使用AllowTransparent = “True”,请参考下面这个方法:/article/57535.htm