如何在WPF中使用WINDOWS FORM控件
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
如何在WPF中使用Windows Form控件
由于WPF中没有没有DateTimePicker控件,网上有人写的又不太好用,而在WinForm中有此控件,因此想到了从.net中借用此控件。
首先,我们需要向项目中的引用(reference)中添加两个动态库dll,一个是.NET库中的System.Windows.Forms,另外一个是WindowsFormsIntegration。组件不好找,排一下序就比较容易了。
添加完两个动态dll以后,就可以在控件库中找到WindowsFormsHost这个控件了。这个控件是我们添加Windows Form控件的基础。跟别的其他的控件一样,它也是可控的,可以自定义它在窗口中的位置、控件大小颜色等属性。
将这个控件放入窗体,放置完以后在xmal代码中会自动生成相应代码:
然后,需要在xmal的开始处添加两行代码
xmlns:WinFormHost="clr-namespace:System.Windows.Forms.Integration;assembly=W indowsFormsIntegration"
xmlns:WinFormControls="clr-namespace:System.Windows.Forms;assembly=System.Wi ndows.Forms"
这样就可以在WindowsFormsHost下放置需要的Windows Form控件了,比如
这是最简单的情况,就是添加了一个button。这时一般会报一个错误:“未找到类型“WinFormControls:Button”。请确保不缺少程序集引用,并且已生成所有引用的程序集”。这都是因为没有生成项目,有些程序集只能在生成时加上,而现在没有加上,解决办法就是在菜单栏点击“生成”->“重新生成解决方案”,就OK了。运行以后会发现整个WindowsFormsHost上就放置了一个硕大的button……如果需要有布局的可以在WindowsFormsHost下放置Panel等布局控件。
最后附上整个xmal代码
xmlns="/winfx/2006/xaml/presentation" xmlns:x="/winfx/2006/xaml" xmlns:WinFormHost="clr-namespace:System.Windows.Forms.Integration;assembly=W indowsFormsIntegration" xmlns:WinFormControls="clr-namespace:System.Windows.Forms;assembly=System.Wi ndows.Forms" Title="MainWindow"Height="350"Width="525"> Margin="104,65,0,0"Name="windowsFormsHost1"VerticalAlignment="Top" Width="286">
以下是MSDN中演练:在WPF 应用程序中承载Windows 窗体控件帮助,以供大家参考/zh-SG/library/bb514662(v=vs.100)