zoukankan      html  css  js  c++  java
  • 在WinForm应用程序中嵌入WPF控件

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

     

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

     

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

     

    1 拖拽ElementHostForm

     

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

     

    3.  接下来我们拖拽一个WinForm ButtonForm中,修改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;

            }

        }

     

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

     

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

     

    3 两个Button的显示

  • 相关阅读:
    react ts axios 配置跨域
    npm run eject“Remove untracked files, stash or commit any changes, and try again.”错误
    java 进程的参数和list的线程安全
    帆软报表 大屏列表跑马灯效果JS
    帆软报表 快速复用数据集,避免重复劳动
    分析云 OA中部门分级思路和实现方法
    分析云 分段器 只显示一个块的数据
    分析云 更改服务默认的端口号
    分析云U8项目配置方法新版本(2)
    Oracle 创建时间维度表并更新是否工作日字段
  • 原文地址:https://www.cnblogs.com/changbaishan/p/3305239.html
Copyright © 2011-2022 走看看