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

时间:2010-10-07 09:47:20

标签: wpf winforms reflection assemblies themes

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

干杯! 埃德加

我只是再次查看代码,我没有使用这种启动winform的方式进行反射。请求的代码在WPF中:

MyInterface x = new MyClass1(); x.LaunchForm();

MyClasses.dll中的代码:

public class MyClass1():MyInterface { public MyClass1() {} public void LaunchForm() { Form1 Form1Dialog = new Form1(); Form1Dialog.ShowDialog(); } }

如上所述,这将从WPF启动winform,但不会应用任何Windows主题。

1 个答案:

答案 0 :(得分:0)

可能你没有适当的清单告诉Windows你与新主题兼容(WPF不需要它)。

我在我的博客http://www.nbdtech.com/Blog/archive/2008/06/16/The-Application-Manifest-Needed-for-XP-and-Vista-Style-File.aspx

上写了这篇文章