集成WPF与Windows窗体

摘要:
下载source-1.92MB本文讨论了如何将WPFXPS文档查看器集成到Windows窗体应用程序中。我将与您分享我想在未来几个月讨论的任务,这些任务表明,当XPS文档使用Visual Studio 2008的文档查看器和嵌入在Windows窗体中的解决方案时,将WPF与Windows窗体集成是多么容易。WPF项目包含Windows窗体用户控件。

介绍 本文讨论如何将WPF XPS文档查看器集成到Windows窗体应用程序中。 “WPF给我们带来了一个美好的未来,我们都应该开始使用它,把我们所有的产品都换成它。” 这是个好主意,但对我们大多数人来说,这是不可能的。例如,我们的主要产品有成千上万行代码和数百个表单。把所有这些都扔进垃圾桶,然后重新开始,这将是经济上的自杀。使用WPF开发新的领域,并将它们与我们的Windows窗体解决方案集成,这将是一个不错的选择。 ParitorWindowsFormWPFIntegration 背景 不久前,我开始研究如何传递电子文档。PDF是一种传统的方法,但微软的XPS提供了更多,所以我决定遵循这条道路。从编程的角度来看,它呈现的是一系列的挑战,创建、显示、交付,等等,我的解决方案,我将与你分享未来几个月但是现在我要讨论的任务显示一个XPS文档使用Visual Studio 2008的文档查看器和嵌入到一个Windows窗体的解决方案。在此过程中,我希望能够演示将WPF与Windows窗体集成是多么容易。 使用的代码 作为练习,我在VS2008中创建了一个解决方案,它由一个WPF库类项目和一个Windows窗体应用程序项目组成。WPF项目包含一个Windows窗体用户控件,该控件本身包含一个WPF文档查看器控件。Windows窗体项目只包含一个用于演示用户控件使用的窗体。 pic2.jpg 当您添加WPF库类时,Visual Studio将为您添加基本引用,但由于我们将添加一个Windows窗体用户控件,因此我们需要添加一些额外的引用。 默认情况下添加以下引用: PresentationCorePresentationFrameworkSystemSystem.CoreSystem.DataSystem.Data.DataSetExtensionsSystem.XMLSystem.Xml.LinqWindowsBase 您将需要添加一个引用到: ReachFrameworkSystem.DrawingSystem.PrintingSystem.Windows.FormsUIAutomationProviderWindowsFormsIntegration 确保你的参考资料和上面一样。 将WPF用户控件添加到项目中,并在其中添加所需的WPF功能。在我的例子中,我只是添加了一个Windows文档查看器。 现在我们需要添加将公开给Windows窗体应用程序的Windows窗体用户控件。在代码中,添加以下import语句。 隐藏,复制Code

Imports System.Windows.Forms.Integration

在表单Usercontrol中,声明WPF Usercontrol的一个实例,在load事件中,创建实例并执行管道操作。我们通过创建一个ElementHost实例来实现这一点。这基本上是一个兼容Windows窗体和WPF的容器。我们创建WPF控件的一个实例,并将其设置为ElementHost的子元素,然后将ElemenHost添加到控件集合中。 隐藏,复制Code

Private WithEvents wpfExtension As ParitorWPF.XPSDocumentViewer

Private Sub ParitorDocumentViewer_Load_
    (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim host As New ElementHost
    wpfExtension = New ParitorWPF.XPSDocumentViewer
    host.Child = wpfExtension
    host.Dock = Forms.DockStyle.Fill
    Me.Controls.Add(host)

End Sub

我们还可以向用户控件添加传递方法,以调用WPF控件或捕获其事件。 现在我们可以向Windows窗体应用程序添加一个窗体,并将我们的Windows窗体用户控件放置在其中。当我们运行表单时,它会显示WPF应用程序,在我的例子中是文档查看器。 它就这么简单——所以也许我们不能仅仅替换我们现有的Windows窗体解决方案,但希望我已经向你展示了逐渐添加WPF函数是多么容易。 历史 初始版本 本文转载于:http://www.diyabc.com/frontweb/news6946.html

免责声明:文章转载自《集成WPF与Windows窗体》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Instruments_Activity Monitor使用入门5秒后返回首页下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

JAVA入门到精通-第30讲-布局管理器

JFrame默认是边界布局的; 流式布局FlowLayout默认是居中对齐的; 右对齐: 按道理每个按钮可以设置大小; 一旦把布局管理器设置好,按钮大小会自动设置; null设置按钮大小; 禁止用户改变窗口大小; 网格布局适合做计算器; 对象数组需要NEW一下; 设置网格布局: (几行,几列) 运用for循环;...

Winform开发之窗体显示、关闭与资源释放

Winform的窗体涉及到一般窗体(单文档窗体)、MDI窗体、窗体之间的关系等,那么如果调用打开新窗体、如何关闭窗体、窗体资源的释放等都关系到软件运行的效率,本文一一介绍 1、窗体的显示 从一个窗体打开另一个窗体,基本会用到两种方法,即Show()和ShowDialog(),前者是一般的窗体,后者是模态窗体。 两种调用是由些许的不同 (1)在调用Form....

ANDROID窗体管理服务实现机制和架构分析

 一、功能     窗体管理是ANDROID框架一个重要部分,主要包含例如以下功能:    (1)Z-ordered的维护   (2)窗体的创建、销毁   (3)窗体的绘制、布局    (4)Token管理,AppToken    (5)活动窗体管理(FocusWindow)    (6)活动应用管理(FocusAPP)    (7)输入法管理  ...

C# WinForm获得主窗体——如何判断哪个是主窗体

一. 关于定义 主窗体的定义一般有两种。第一种就是一般上,普遍意义认为是程序中第一个被创建出来的窗体,但是由于一些程序在显示主窗体之前会有一个登录或者引导窗体,在使用完了之后直接隐藏而不是关闭。这个时候,主窗体并不会是第一个窗体。所以,第二种说法就是说,包含了软件整体功能的展示性界面所在的窗体,我们称之为主窗体。 而在本文中,所有叙述中所指的主窗体都是指的...

winform子窗口调用父窗口的控件及方法-一般调用

首先新建一个窗体应用程序,在项目属性中点击右键->添加->添加新项,选择Windows窗体->添加。  在Form1和Form2窗口中各添加一个按钮,并双击添加事件处理函数:     父窗口Form1的按钮处理函数,打开子窗口Form2,另外定义一个显示消息框的方法供子窗口调用(定义为public才能被调用): 注意:弹出窗体2的代...

asp11

AppRelativeTemplateSourceDirectory 获取或设置包含该控件的 Page 或 UserControl 对象的应用程序相对虚拟目录。 1.0 BindingContainer 获取包含该控件的数据绑定的控件。 1.0 ClientID 获取由 ASP.NET 生成的服务器控件标识符。 1.0 Controls 获...