我们知道,在WPF界面上添加WinForm的控件需要使用WindowsFormHost类。而在WinForm界面上添加WPF控件该如何做呢?有没有类似的类呢?明显是有的,ElementHost就是为了在WinForm应用程序中嵌入WPF元素而定义的。它继承自System.Windows.Forms.Control,是一个WinForm控件,但它知道如何显示WPF内容。

接下来演示如何使用ElementHost来显示一个WPF控件——Button,并与WinForm中Button的显示作个简单的对比(xp环境)。

1.  创建一个标准的WinForm工程,从工具栏中找到“WPF Interoperability”项目,选择其中的ElementHost,将其拖拽到Form中,如图1所示:

图 1 拖拽ElementHost到Form中

2.  简单的调整一下ElementHost的大小,因为默认情况下,WPF控件会占据所有给予ElementHost的空间。此外,我们查看一下工程的References,可以看到,拖拽ElementHost后,会自动添加必要的WPF程序集(PresentationFramework、PresentationCore、WindowBase等)。

3.  接下来我们拖拽一个WinForm Button到Form中,修改Button的内容为“Button in Winform”,如图2所示:

图 2 添加Winform Button

4.  WPF控件只能在后台代码中添加到ElementHost中,我们在窗体的构造函数中创建WPF控件,如下面的代码片段所示:

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

// Create a WPF Button

System.Windows.Controls.Button btn = new System.Windows.Controls.Button();

btn.Content = "Button in WPF";

// Add it to ElementHost

elementHost.Child = btn;

}

}

ElementHost的Child属性为UIElement类型,因此,它可以被设置成任何UIElement对象。

5.  按下F5,运行Winform应用程序,WPF的Button控件和Winform的Button控件显示如图3所示。可以看出,两个Button的默认字体明显不同。

图 3 两个Button的显示

转载于:https://www.cnblogs.com/hobby/archive/2012/07/04/2576039.html

在WinForm应用程序中嵌入WPF控件(转)相关推荐

  1. 技巧:在Silverlight 2应用程序中切换用户控件

    版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://terrylee.blog.51cto.com/342737/85341 ...

  2. VS2010下ocx开发:(2)在C#程序中调用ocx控件

    在本文中,给出一个C#示例程序,调用上一篇博文中创建的MultiplyDemo.ocx控件.注意需要保证该控件已经注册过. 启动Visual Studio 2010,使用C#创建一个Windows窗体 ...

  3. VS中安装DevExpress后在Winform的工具箱中不显示控件

    场景 DevExpress14以及注册机下载 https://download.csdn.net/download/badao_liumang_qizhi/11608734 DevExpress18安 ...

  4. 在 ActiveReports 中嵌入 Spread 控件

    Spread 是一款很出色的表格控件,Spread 可以使开发人员把具有兼容 Microsoft Excel 的电子表格添加到程序中.ActiveReports 提供了一个非常灵活的.简单的报表环境. ...

  5. 网页中嵌入Excel控件

    前提, 客户端必须装windows office Excel,我机器上装的时office 2003,如果你机器装的是office 2007只要把 object id="_obj_Excel& ...

  6. 在 .NET Compact Framework 2.0 中宿主 ActiveX 控件

    适用于: ActiveX Microsoft .NET Compact Framework 版本 2.0 摘要:了解如何在使用 .NET Compact 的应用程序中宿主 ActiveX 控件.本文提 ...

  7. 使用观察者模式在 Silverlight 中切换用户控件

    有一篇技巧,见 http://tech.sina.com.cn/s/2008-07-03/1528718607.shtml 或 http://kb.cnblogs.com/page/42897/?pa ...

  8. 关于EasyUI DataGrid行编辑时嵌入时间控件

    本人做一个名为"安徽中控"项目时,为快速开发基础数据增删改模块,遂采用EasyUIDatagrid将所有增删改查的操作都集中于表格中,并且所有增删改查操作都集中于泛型对象,从而不必 ...

  9. 在C# winform程序中调用WPF写的数学公式编辑器

    由于工作原因,需要在程序中加入数学公式编辑功能,因此在网上找了不少开源数学公式程序.经过比较,最终选择了Math-Editor-master程序(可以在github上搜索此名称). 我的程序(简称主程 ...

最新文章

  1. 农产品流通信息化及农超对接体系的现状
  2. iphone完整版的http上传请求协议
  3. JPA基础(一):全面阐释和精彩总结JPA
  4. docker安装php怎么修改配置,怎么给docker配置内存大小?
  5. Git 的安装和创建版本库 。
  6. c语言 结构体_颖儿教你学C语言结构体,全面讲解,让程序小白玩转结构体编程...
  7. linux的一些软件的安装路径
  8. 在线十六进制颜色随机生成器
  9. ORACLE成果,天天10问(四)
  10. Linux内核模块静态加载的顺序
  11. 6、Latex学习笔记之参考文献篇
  12. Linux运维养成记-磁盘管理LVM 逻辑卷
  13. [iOS]分析Mach-O文件
  14. python 视频文件格式和分辨率转换
  15. pythoninterpreter_java-Jython :: PythonInterpreter可以使用哪些模块...
  16. 萌新python爬虫初学
  17. postgresql 命令行操作
  18. VisionFive2 星光板,开发之旅-1
  19. 学Python好还是学Java好?学哪个更好就业?
  20. 以排印为本,从内容出发

热门文章

  1. Korn Shell: typeset
  2. 高级交换路由课程PPT下载打包了
  3. 苹果智能家居大招要来 两年一直没火真相解秘
  4. 总结一下php5.2.16与apache2.0的C++扩展开发整个过程
  5. volcanol_linux_shell_汇总贴
  6. iOS实现本地通知(local notification)的方法
  7. 色诱社报道:昨日,腾讯公司公布了2009年发展策划
  8. as用百度地图不联网就gg
  9. 【ASP.NET MVC 学习笔记】- 07 使用 Entity Framework
  10. NOIP2012 文化之旅