在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,今天的分享就到這里了,有疑問歡迎指導。
