从WPF窗口启动的Windows窗体不显示当前系统主题。为什么?

从WPF窗口启动的Windows窗体不显示当前系统主题。为什么?,wpf,winforms,reflection,assemblies,themes,Wpf,Winforms,Reflection,Assemblies,Themes,我有一个WPF应用程序,它有一个变量x,它是自定义C程序集MyClasses.dll中的一个类的实例。此变量x有一个方法LaunchForm,该方法从另一个程序集MyForms.dll启动Windows窗体Form1。表单作为对话框启动并显示在屏幕上,但当前的Windows XP/Win7主题/外观未应用于该表单。如果此Form1是从Windows窗体而不是WPF窗口启动的,则会正确显示。知道为什么会这样吗?有什么提示可以解决这个问题吗 干杯! 埃德加 我只是再次查看了代码,并没有使用反射来启动

我有一个WPF应用程序,它有一个变量x,它是自定义C程序集MyClasses.dll中的一个类的实例。此变量x有一个方法LaunchForm,该方法从另一个程序集MyForms.dll启动Windows窗体Form1。表单作为对话框启动并显示在屏幕上,但当前的Windows XP/Win7主题/外观未应用于该表单。如果此Form1是从Windows窗体而不是WPF窗口启动的,则会正确显示。知道为什么会这样吗?有什么提示可以解决这个问题吗

干杯! 埃德加

我只是再次查看了代码,并没有使用反射来启动winform。要求的代码在WPF中:

MyInterface x=新的MyClass1; x、 发射形式

MyClasses.dll中的代码:

公共类MyClass1:MyInterface { 公共MyClass1 {} 公开表格 { Form1 Form1对话框=新Form1; Form1Dialog.ShowDialog; } }


如前所述,这将从WPF启动winform,但没有对其应用windows主题。

可能您没有合适的清单来告诉windows您与新主题兼容—WPF不需要它


我在我的博客上写了这篇文章,网址是

你能发布代码吗?这将有助于回答问题。是的,你用来调用表单的代码示例将非常有用。Nir,谢谢你的帮助。你的文章确实有助于在我的对话框中启用主题。解决方案:必须向应用程序添加一个清单,指示对Microsoft Windows控件的依赖关系。