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

更新:2007 年 11 月

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

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

  • 创建项目。

  • 创建 Windows 窗体组合控件。

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

说明:

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

先决条件

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

  • Visual Studio 2008。

创建项目

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

创建项目

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

    Window1.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 控件的下列属性。

    属性

    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 中添加或移除引用 (Visual Basic)

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

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

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

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

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

后续步骤

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

请参见

任务

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

参考

WindowsFormsHost

ElementHost

其他资源

使用 WPF 设计器中的控件

迁移和互操作性