演练:使用 WPF 设计器承载 Windows 窗体用户控件
更新:2007 年 11 月
本演练演示如何使用 Visual Studio Windows Presentation Foundation (WPF) 设计器在 WPF 应用程序中承载 Windows 窗体组合控件。有关 Windows 窗体和 WPF 互操作性的更多信息,请参见迁移和互操作性。
本演练中阐释的任务包括:
创建项目。
创建 Windows 窗体组合控件。
在 WPF 应用程序中承载 Windows 窗体控件。
说明: |
---|
显示的对话框和菜单命令可能会与“帮助”中的描述不同,具体取决于您的当前设置或版本。若要更改设置,请在“工具”菜单上选择“导入和导出设置”。有关更多信息,请参见 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 控件上的智能标记标志符号 (),然后从“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 窗体控件