演练:使用 WPF 设计器承载 Windows 窗体用户控件

本演练演示如何使用适用于 Visual Studio 的 WPF 设计器在 WPF 应用程序中承载 Windows 窗体组合控件。有关 Windows 窗体和 WPF 互操作性的更多信息,请参见迁移和互操作性。 

本演练中阐释的任务包括:

  • 创建项目。

  • 创建 Windows 窗体组合控件。

  • 在 WPF 应用程序中承载 Windows 窗体控件。

提示

显示的对话框和菜单命令可能会与“帮助”中的描述不同,具体取决于您现用的设置或版本。 若要更改设置,请在“工具”菜单上选择“导入和导出设置”。 有关更多信息,请参见 使用设置

系统必备

您需要以下组件来完成本演练:

  • Visual Studio 2010.

创建项目

第一步是为宿主应用程序创建项目。

创建项目

  1. 创建一个名为“DemoApplication”的 WPF 应用程序项目。 有关更多信息,请参见如何:创建新的 WPF 应用程序项目

    MainWindow.xaml 将在 WPF 设计器中打开。 

  2. 在**“解决方案资源管理器”**中,添加一个对名为 WindowsFormsIntegration.dll 的 WindowsFormsIntegration 程序集的引用。

  3. 在**“解决方案资源管理器”**中,添加一个对名为 System.Windows.Forms.dll 的 Windows 窗体程序集的引用。

创建 Windows 窗体组合控件

本过程演示如何创建一个根据其内容调整自身大小的组合控件。 TableLayoutPanel 控件和 AutoSize 属性提供控件的动态布局功能。 有关更多信息,请参见 TableLayoutPanel 控件(Windows 窗体)

创建 Windows 窗体组合控件

  1. 向解决方案中添加一个名为“DemoControlLibrary”的新 Windows 窗体控件库项目。 有关更多信息,请参见如何:添加和移除解决方案项

    UserControl1 在 Windows 窗体设计器中打开。

  2. 在**“工具箱”**中双击 TableLayoutPanel 控件。 一个 TableLayoutPanel 控件随即出现在设计图面上。

  3. 从**“TableLayoutPanel 任务”智能标记菜单中选择“移除最后一行”**。

  4. 在**“属性”**窗口中,将 Dock 属性的值设置为 Fill

  5. 从**“工具箱”**中将一个 Label 控件添加到 TableLayoutPanel 控件的第一个单元格中。

  6. 在**“属性”**窗口中,设置 Label 控件的下列属性。

    Property

    AutoSize

    True

    Dock

    Fill

    Margin

    0,0,0,0

    Text

    输入日期:

    TextAlign

    MiddleCenter

  7. 从**“工具箱”**中将一个 MaskedTextBox 控件添加到 TableLayoutPanel 控件的第二个单元格中。

  8. 单击 MaskedTextBox 控件上的智能标记标志符号 (智能标记标志符号),然后从**“MaskedTextBox 任务”菜单中选择“设置掩码”**。

    将出现**“输入掩码”**对话框。

  9. 从**“掩码说明”列中选择“短日期”(或其他预定义的掩码说明),然后单击“确定”**按钮。

  10. 在**“属性”**窗口顶部的下拉列表中选择 TableLayoutPanel 控件。

  11. AutoSize 属性的值设置为 true。

  12. 在**“属性”窗口的顶部选择“UserControl1”**。

  13. AutoSize 属性的值设置为 true,将 Size 属性的值设置为 0,0。

    **“UserControl1”**将调整大小以适应其内容。

  14. 在**“生成”菜单上选择“生成解决方案”**以生成解决方案。

在 WPF 中承载 Windows 窗体控件

可以使用 WindowsFormsHost 元素在 WPF 应用程序中承载**“UserControl1”**。

在 WPF 中承载 Windows 窗体控件

  1. 在**“解决方案资源管理器”**的 DemoApplication 项目中,添加一个对 DemoControlLibrary 项目的引用。 有关更多信息,请参见如何:在 Visual Studio 中添加或移除引用

  2. 在 WPF 设计器中打开 MainWindow.xaml。

  3. 在 XAML 视图中,通过在 Window 开始标记中插入以下命名空间映射来导入 DemoControlLibrary 命名空间。 有关更多信息,请参见如何:将命名空间导入 XAML

    xmlns:dc="clr-namespace:DemoControlLibrary;assembly=DemoControlLibrary"
    
  4. Grid 开始标记后面插入以下代码。

    <WindowsFormsHost HorizontalAlignment="Left" VerticalAlignment="Top">
        <dc:UserControl1/>
    </WindowsFormsHost>
    

    表示所承载的 Windows 窗体控件的区域将出现在设计器中。

  5. 运行解决方案以测试该用户控件。

后续步骤

还可以在 Windows 窗体中承载 WPF 控件。 有关更多信息,请参见使用 WPF 控件

请参见

任务

演练:在 WPF 中承载 Windows 窗体控件

参考

WindowsFormsHost

ElementHost

其他资源

使用 WPF 设计器中的控件

迁移和互操作性