WinForm中调用WPF控件
在WinForm中可以使用WPF中的控件,或者由WPF创建的自定义控件;
步骤1:创建WinForm工程;
步骤2:在WinForm工程的解决方案资源管理器中,在刚刚创建的WinForm解决方案中新建或者添加现有的WPF用户控件工程;
步骤3:在WPF中创建自定义的控件,或者添加WPF控件到面板上;
步骤4:在WinForm面板上添加ElementHost控件(工具箱中);
步骤5:生成解决方案;
步骤6:在刚刚的ElementHost中的Child属性中添加刚刚的WPF生成的控件;
步骤7:完成。
如果在ElementHost的Child属性中添加了WPF生成的控件,编译的时候出现如下错误:
错误 1 类型“System.Windows.Markup.IComponentConnector”在未被引用的程序集中定义。必须添加对程序集“System.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”的引用。
则要在WinForm中解决方案-> 添加引用->System.Xaml,类似的错误,就添加相应的引用。
如何在winform中调用WPF用户控件里面的属性和方法呢,如图:
WinForm工程为test,WPF用户控件工程为WpfControlLibrary1。
假设我们的WpfControlLibrary1中有个方法叫wpf_fun();如果我们要在test中调用的话,则需要把WPF的控件添加到WinForm中的ElementHost中,然后再需要调用的地方写上((WpfControlLibrary1.MainControl)elementHost1.Child).wpf_fun();,其中MainControl就是你自己创建的自定义的控件的名称,这样就可以了。