WPF应用程序只是托管代码吗?

时间:2010-08-11 18:55:55

标签: c++ wpf unmanaged managed

我想在应用中使用WPF。我想用C ++编写它。是否必须管理应用程序?我知道我可以将管理与非托管混合使用。我想知道我是否可以让整个应用程序不受管理。

2 个答案:

答案 0 :(得分:7)

您可以轻松地在非托管代码中开发99%的WPF应用程序,但是使其100%不受管理是非常困难的。

WPF类没有Guid属性,因此它们不能与COM一起使用。因此,使用100%非托管代码构建WPF对象(如Button和Window)需要一个非托管CLR API。 Hosting API可能是最简单的,但它仍然是相当多的工作。

如果您愿意接受99%的非托管代码,只需使用/ clr选项编译您的应用程序,并使用IJW实例化WPF对象并调用Application.LoadComponent等方法。

另请注意,WPF绑定到非托管对象要求这些对象完全支持COM,包括IDispatch。

答案 1 :(得分:1)

正如您所知,您可以通过互操作混合托管和非托管;但是,WPF在CLR上运行。

以下是Web上的一篇文章,其中一些人推测未来的非托管版本:

http://neilmosafi.blogspot.com/2008/07/unmanaged-version-of-wpf-coming.html

如果你选择走这条路线,这是关于WPF /本地互操作的附加参考:

http://msdn.microsoft.com/en-us/library/ms742522.aspx