前言
在WPF(Framework框架)中使用winform控件或者自定义控件(类库DLL)
一、添加引用
System.Windows.Forms.dll(Winform自带的控件库)
WindowsFormsIntegration(负责整合WPF和Windows,这个也是自带的控件库)
提示:这两个引用都是在程序集中可以直接找到的
MPMeasure.dll
MPSizectorS_DotNet
MPSizectorS_DotNetUI
以上三个为(自定义的控件库)
二、在要使用WinForm控件的WPF窗体的XAML文件中添加内容
xmlns是XML_Namespace的缩写,用来引用程序集和其中的命名空间,类似C#的using
xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"
xmlns:wfi ="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration"
三、在xmal设计界面添加宿主容器
1、添加WinForm标准库容器与控件方法如下
<!--PictureBox为例子-->
<Grid HorizontalAlignment="Left" Height="482" Margin="6,6,0,0" VerticalAlignment="Top" Width="737">
<wfi:WindowsFormsHost>
<wf:PictureBox x:Name="Cv_Main" Margin="0,0,0,0"></wf:PictureBox>
</wfi:WindowsFormsHost>
</Grid>
2、添加第三方控件,则只需要在设计界面放置宿主容器,但必须命名
<Grid HorizontalAlignment="Left" Height="482" Margin="6,6,0,0" VerticalAlignment="Top" Width="737">
<wfi:WindowsFormsHost
x:Name="WinFormHost">
<!--留空-->
</wfi:WindowsFormsHost>
</Grid>
3、然后再后台添加代码,方法如下:
//添加你的命名空间
using YourControlNamespace;
//实例化对象
YourControl control = new YourControl();
//宿主容器必须命名,否则后台找不到宿主添加
this.WinFormHost.Child = control;
四、项目代码
<TabControl x:Name="MeasureDisplayPage" Margin="0,0,0,-0.2">
<TabItem Header="Display">
<WindowsFormsHost x:Name="WinFormHost_Display">
<!--留空-->
</WindowsFormsHost>
</TabItem>
<TabItem Header="MeasureDisplay">
<WindowsFormsHost x:Name="WinFormHost_MeasureDisplay">
<!--留空-->
</WindowsFormsHost>
</TabItem>
</TabControl>