更新:2007 年 11 月
本演练演示如何使用 Visual Studio Windows Presentation Foundation (WPF) 设计器在 WPF 应用程序中承载 Windows 窗体组合控件。有关 Windows 窗体和 WPF 互操作性的更多信息,请参见迁移和互操作性。
本演练中阐释的任务包括:
- 创建项目。 
- 创建 Windows 窗体组合控件。 
- 在 WPF 应用程序中承载 Windows 窗体控件。 
| .gif) 说明: | 
|---|
| 显示的对话框和菜单命令可能会与“帮助”中的描述不同,具体取决于您的当前设置或版本。若要更改设置,请在“工具”菜单上选择“导入和导出设置”。有关更多信息,请参见 Visual Studio 设置。 | 
先决条件
您需要以下组件来完成本演练:
- Visual Studio 2008。
创建项目
第一步是为宿主应用程序创建项目。
创建项目
- 创建一个名为“DemoApplication”的 WPF 应用程序项目。有关更多信息,请参见如何:创建新的 WPF 应用程序项目。 - Window1.xaml 在 WPF 设计器中打开。 
- 在“解决方案资源管理器”中,添加一个对名为 WindowsFormsIntegration.dll 的 WindowsFormsIntegration 程序集的引用。 
- 在“解决方案资源管理器”中,添加一个对名为 System.Windows.Forms.dll 的 Windows 窗体程序集的引用。 
创建 Windows 窗体组合控件
本过程演示如何创建一个根据其内容调整自身大小的组合控件。TableLayoutPanel 控件和 AutoSize 属性提供控件的动态布局功能。有关更多信息,请参见 TableLayoutPanel 控件(Windows 窗体)。
创建 Windows 窗体组合控件
- 向解决方案中添加一个名为“DemoControlLibrary”的新 Windows 窗体控件库项目。有关更多信息,请参见如何:添加和移除解决方案项。 - UserControl1 在 Windows 窗体设计器中打开。 
- 在“工具箱”中双击 TableLayoutPanel 控件。一个 TableLayoutPanel 控件随即出现在设计图面上。 
- 从“TableLayoutPanel 任务”智能标记菜单中选择“移除最后一行”。 
- 从“工具箱”中将一个 Label 控件添加到 TableLayoutPanel 控件的第一个单元格中。 
- 在“属性”窗口中设置 Label 控件的下列属性。 - 属性 - 值 - AutoSize - True - Dock - Fill - Margin - 0,0,0,0 - Text - 输入日期: - TextAlign - MiddleCenter 
- 从“工具箱”中将一个 MaskedTextBox 控件添加到 TableLayoutPanel 控件的第二个单元格中。 
- 单击 MaskedTextBox 控件上的智能标记标志符号 ( .gif) ),然后从“MaskedTextBox 任务”菜单中选择“设置掩码”。 ),然后从“MaskedTextBox 任务”菜单中选择“设置掩码”。- 将出现“输入掩码”对话框。 
- 从“掩码说明”列中选择“短日期”,然后单击“确定”按钮。 
- 在“属性”窗口顶部的下拉列表中选择 TableLayoutPanel 控件。 
- 将 AutoSize 属性的值设置为 true。 
- 在“属性”窗口的顶部选择“UserControl1”。 
- 将 AutoSize 属性的值设置为 true,将 Size 属性的值设置为 0,0。 - “UserControl1”将调整大小以适应其内容。 
- 在“生成”菜单上选择“生成解决方案”以生成解决方案。 
在 WPF 中承载 Windows 窗体控件
可以使用 WindowsFormsHost 元素在 WPF 应用程序中承载“UserControl1”。
在 WPF 中承载 Windows 窗体控件
- 在“解决方案资源管理器”的 DemoApplication 项目中,添加一个对 DemoControlLibrary 项目的引用。有关更多信息,请参见如何:在 Visual Studio 中添加或移除引用 (Visual Basic)。 
- 在 WPF 设计器中打开 Window1.xaml。 
- 在 XAML 视图中,通过在 Window 开始标记中插入以下命名空间映射来导入 DemoControlLibrary 命名空间。有关更多信息,请参见如何:将命名空间导入 XAML。 - xmlns:dc="clr-namespace:DemoControlLibrary;assembly=DemoControlLibrary"
- 在 Grid 开始标记后面插入以下代码。 - <WindowsFormsHost HorizontalAlignment="Left" VerticalAlignment="Top"> <dc:UserControl1/> </WindowsFormsHost>- 表示所承载的 Windows 窗体控件的区域将出现在设计器中。 
后续步骤
还可以在 Windows 窗体中承载 WPF 控件。有关更多信息,请参见使用 Windows Presentation Foundation 控件。
请参见
任务
演练:在 Windows Presentation Foundation 中承载 Windows 窗体控件