本演练演示如何使用适用于 Visual Studio 的 WPF 设计器在 WPF 应用程序中承载 Windows 窗体组合控件。有关 Windows 窗体和 WPF 互操作性的更多信息,请参见迁移和互操作性。
本演练中阐释的任务包括:
- 创建项目。 
- 创建 Windows 窗体组合控件。 
- 在 WPF 应用程序中承载 Windows 窗体控件。 
提示
显示的对话框和菜单命令可能会与“帮助”中的描述不同,具体取决于您现用的设置或版本。 若要更改设置,请在“工具”菜单上选择“导入和导出设置”。 有关更多信息,请参见 使用设置。
系统必备
您需要以下组件来完成本演练:
- Visual Studio 2010.
创建项目
第一步是为宿主应用程序创建项目。
创建项目
- 创建一个名为“DemoApplication”的 WPF 应用程序项目。 有关更多信息,请参见如何:创建新的 WPF 应用程序项目。 - MainWindow.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 控件的下列属性。 - Property - 值 - 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 中添加或移除引用。 
- 在 WPF 设计器中打开 MainWindow.xaml。 
- 在 XAML 视图中,通过在 Window 开始标记中插入以下命名空间映射来导入 DemoControlLibrary 命名空间。 有关更多信息,请参见如何:将命名空间导入 XAML。 - xmlns:dc="clr-namespace:DemoControlLibrary;assembly=DemoControlLibrary"
- 在 Grid 开始标记后面插入以下代码。 - <WindowsFormsHost HorizontalAlignment="Left" VerticalAlignment="Top"> <dc:UserControl1/> </WindowsFormsHost>- 表示所承载的 Windows 窗体控件的区域将出现在设计器中。 
- 运行解决方案以测试该用户控件。 
后续步骤
还可以在 Windows 窗体中承载 WPF 控件。 有关更多信息,请参见使用 WPF 控件。