winform有很多非常好用的原生控件。比如chart控件,openfiledialog控件等等。
wpf不支持直接使用winform的控件,但一个wpf程序中可以通过WindowsFormsHost控件托管winform控件。
使用下面的步骤使用全部的winform控件。在一个wpf程序中:
1.创建一个winform的自定义控件UserControl。
注意不是wpf用户控件,如下图所示
2.打开新建的用户控件,加入自己想用的winform控件。
所有winform控件都可以使用了,这样回到了我们熟悉的环境当中。
添加完成后,打开后台代码,记住当前用户控件的命名空间nameSpace
3.将用户控件插入wpf控件。
打开wpf页面(XAML),在开头引入你的用户控件,比如我的用户控件namespace是
COBRA4_cm.WindowsHelpper,那么加入
xmlns:WinHelpper="clr-namespace:COBRA4_cm.WindowsHelpper"
解释一下,winhelpper是自定义的标识符,下面会用到,clr-namespace:是映射的固定写法,
后面是命名空间。是时候轮到WindowsFormsHost上场了。
在wpf页面中插入WindowsFormsHost控件,然后在WindowsFormsHost中使用用户控件。
延续上面的例子,代码如下:
<WindowsFormsHost Width="600" Height="200"> <WinHelpper:OpenInputFileDialog> </WinHelpper:OpenInputFileDialog> </WindowsFormsHost>
注意,winhelpper就是我们上面头部引用中定义的标识符。打出winhelpper就可以把用户控件带出来了。
但只能在windowsformshost托管空间里面,托管控件定位样式可以根据wpf规则自由调整。
以上就完成了在wpf中使用winform控件的过程,用法就和使用控件一样。