WPF Add-in 的一个大 BUG!!!!?
由于WPF先天的限制,没有办法将某个应用程序域(AppDomain)生成的WPF对象传递到另外一个应用程序域,
必须通过FrameworkElementAdapters的两个静态方法(ViewToContractAdapter和ContractToViewAdapter)。
当要将某个应用程序域生成的WPF对象传递到另外一个应用程序域之前,
需要把FrameworkElement类型的WPF对象转换为INativeHandleContract才能传递过去,
FrameworkElementAdapters.ViewToContractAdapter(FrameworkElement类型的对象)
另外一个应用程序在取到INativeHandleContract对象后,
需要把INativeHandleContract对象转换回FrameworkElement类型的对象后才能使用(进行显示)。
FrameworkElementAdapters.ContractToViewAdapter(INativeHandleContract类型的对象)
通过这种方法,可以解决在两个应用程序域之间传递WPF对象的问题。
具体的例子可以参照微软给出的两个例子。
例子1(英文)
How to: Create an Add-In That Returns a UI
http://msdn.microsoft.com/en-us/library/bb909849.aspx
例子2(英文)
How to: Create an Add-In That Is a UI
http://msdn.microsoft.com/en-us/library/bb909887.aspx
我按照上面给出的例子把程序做出来运行之后,咋看一下好像没有什么问题,
但是当我在不关闭应用程序的情况下不断的加载新的外接程序,
加载到一定的次数之后程序出现 【Exception from HRESULT: 0x88980406】异常。
我使用的环境如下:
Visual Studio Team System 2008 Version 9.0.21022.8 RTM
Windows Vista Ultimate with Service Pack 1
另,CLR Add-in Team 给出的例子也有问题。
http://blogs.msdn.com/clraddins/archive/2007/08/06/appdomain-isolated-wpf-add-ins-jesse-kaplan.aspx(例子说明)
http://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=clraddins&ReleaseId=9454(.NET 3.5 源程序)
再现方法:不停的选择或取消某个外接程序对应的菜单选项以对外接程序进行加载或卸载。
感觉Add-in框架好像不是很稳定的样子……难道仅仅是因为我环境的问题?
必须通过FrameworkElementAdapters的两个静态方法(ViewToContractAdapter和ContractToViewAdapter)。
当要将某个应用程序域生成的WPF对象传递到另外一个应用程序域之前,
需要把FrameworkElement类型的WPF对象转换为INativeHandleContract才能传递过去,
FrameworkElementAdapters.ViewToContractAdapter(FrameworkElement类型的对象)
另外一个应用程序在取到INativeHandleContract对象后,
需要把INativeHandleContract对象转换回FrameworkElement类型的对象后才能使用(进行显示)。
FrameworkElementAdapters.ContractToViewAdapter(INativeHandleContract类型的对象)
通过这种方法,可以解决在两个应用程序域之间传递WPF对象的问题。
具体的例子可以参照微软给出的两个例子。
例子1(英文)
How to: Create an Add-In That Returns a UI
http://msdn.microsoft.com/en-us/library/bb909849.aspx
例子2(英文)
How to: Create an Add-In That Is a UI
http://msdn.microsoft.com/en-us/library/bb909887.aspx
我按照上面给出的例子把程序做出来运行之后,咋看一下好像没有什么问题,
但是当我在不关闭应用程序的情况下不断的加载新的外接程序,
加载到一定的次数之后程序出现 【Exception from HRESULT: 0x88980406】异常。
我使用的环境如下:
Visual Studio Team System 2008 Version 9.0.21022.8 RTM
Windows Vista Ultimate with Service Pack 1
另,CLR Add-in Team 给出的例子也有问题。
http://blogs.msdn.com/clraddins/archive/2007/08/06/appdomain-isolated-wpf-add-ins-jesse-kaplan.aspx(例子说明)
http://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=clraddins&ReleaseId=9454(.NET 3.5 源程序)
再现方法:不停的选择或取消某个外接程序对应的菜单选项以对外接程序进行加载或卸载。
感觉Add-in框架好像不是很稳定的样子……难道仅仅是因为我环境的问题?
...全文
相关推荐
WPF实现打印
实现打印的第一步是创建一个`FlowDocument`,将列表数据转换为可打印的格式。
WPF入门实例——WPF目录树实例
在WPF中,`TreeView`控件被用来实现这样的功能。让我们通过这个实例来理解如何在WPF应用中创建一个目录树。
How to build a custom control in WPF
= "Hello World";b.Children.Add(text);```在这个例子中,我们创建了一个按钮,并在其内部添加了一个文本块来显示“Hello World”。
wpf绘制各种图表和柱状图
WPF Toolkit是一个开源项目,由Microsoft提供支持,它为WPF应用程序添加了许多附加控件和图形功能,其中包括图表组件。
C# Winform使用WPF控件
要在Winform中使用WPF控件,我们需要引用WPF相关的dll,并创建一个元素宿主(ElementHost)控件。


.NET Framework
