演练:设计时在 Windows 窗体上创建新的 Windows Presentation Foundation 内容
更新:2007 年 11 月
本主题演示如何创建 Windows Presentation Foundation (WPF) 控件,以便在基于 Windows 窗体的应用程序中使用。
在本演练中,您将执行下列任务:
创建项目。
创建新 WPF 控件。
将新的 WPF 控件添加到 Windows 窗体中。WPF 控件在 ElementHost 控件中承载。
说明: |
---|
显示的对话框和菜单命令可能会与“帮助”中的描述不同,具体取决于您的当前设置或版本。若要更改设置,请在“工具”菜单上选择“导入和导出设置”。有关更多信息,请参见 Visual Studio 设置。 |
先决条件
您需要以下组件来完成本演练:
- Visual Studio 2008.
创建项目
第一步是创建 Windows 窗体项目。
说明: |
---|
当承载 WPF 内容时,仅支持 C# 和 Visual Basic 项目。 |
创建项目
- 使用 Visual Basic 或 Visual C# 创建一个名为 HostingWpf 的新 Windows 窗体应用程序项目。有关更多信息,请参见如何:创建 Windows 应用程序项目。
创建新 WPF 控件。
创建新 WPF 控件并将其添加到项目中,和将任何其他项添加到项目中一样简单。Windows 窗体设计器使用一类名为复合控件或用户控件的特殊控件。有关 WPF 用户控件的更多信息,请参见 UserControl。
说明: |
---|
WPF 的 System.Windows.Controls.UserControl 类型不同于 Windows 窗体提供的用户控件类型,后者也称为 System.Windows.Forms.UserControl。 |
创建新 WPF 控件
在“解决方案资源管理器”中,将新的“用户控件 (WPF)”项添加到项目中。使用该控件类型的默认名称 UserControl1。有关更多信息,请参见如何:添加和移除解决方案项。使用默认名称 UserControl1.xaml。
添加新控件可产生以下效果。
将文件 UserControl1.xaml 添加到项目中。
将文件 UserControl1.xaml.cs 或 UserControl1.xaml.vb 添加到项目中。该文件包含事件处理程序和其他实现的代码隐藏。
将对 WPF 程序集的引用添加到此项目。
文件 UserControl1.xaml 在 Visual Studio Windows Presentation Foundation (WPF) 设计器中打开。
在“设计”视图中,确保选中 UserControl1。有关更多信息,请参见如何:在设计图面上选择和移动元素。
将 System.Windows.Controls.TextBox 控件从“工具箱”中拖动到设计图面。
在“属性”窗口中,将 Text 属性的值设置为“所承载的内容”。
说明: 通常,您应该承载更复杂的 WPF 内容。System.Windows.Controls.TextBox 控件在此处仅用于说明目的。
生成项目。
将 WPF 控件添加到 Windows 窗体
新 WPF 控件已准备好,可在窗体中使用。Windows 窗体使用 ElementHost 控件承载 WPF 内容。
将 WPF 控件添加到 Windows 窗体
在 Windows 窗体设计器中打开 Form1。
在“工具箱”中,查找标记为“HostingWpf WPF 用户控件”的选项卡。
将 UserControl1 的实例拖到窗体中。
在窗体上自动创建 ElementHost 控件来承载 WPF 控件。
ElementHost 控件命名为 elementHost1,在“属性”窗口中,可以看到它的 Child 属性设置为“UserControl1”。
将对 WPF 程序集的引用添加到此项目。
elementHost1 控件有一个智能标记面板,显示可用承载选项。
在“ElementHost 任务”智能标记面板中,选择“在父容器中停靠”。
按 F5 生成并运行应用程序。
后续步骤
Windows 窗体和 WPF 是不同的技术,但它们可以紧密地进行互操作。若要在应用程序中提供更丰富的外观和行为,请尝试以下操作。
在 WPF 页面中承载 Windows 窗体控件。有关更多信息,请参见演练:在 Windows Presentation Foundation 中承载 Windows 窗体控件。
将 Windows 窗体视觉样式应用于 WPF 内容。有关更多信息,请参见如何:在混合应用程序中启用视觉样式。
更改 WPF 内容的样式。有关更多信息,请参见演练:设置 Windows Presentation Foundation 内容的样式。