在WPF中的WindowsFormsHost中使用SetWindowTheme()控件?

时间:2009-10-18 02:53:17

标签: wpf interop windowsformshost

我正在开发一个与Windows 7的Device Stage密切相关的应用程序。在Device Stage中,在主横幅下面有一个ListView,其中包含体现为ListViewItems的动作。

在我的WPF应用程序中,我使用WindowsFormsHost来托管WinForms ListView,以便我可以在其上使用SetWindowTheme()并对其应用Windows Vista / 7样式。

然而,这不起作用,并且在Windows窗体中使用时效果不同。

如何在WPF中的ListView上实现Windows 7外观?我不打算创建一个自定义样式然后应用它,因为坦率地说,继续在这个应用程序中使用WPF太麻烦了。

谢谢! :)

1 个答案:

答案 0 :(得分:3)

只需添加以下行:

[DllImport("uxtheme.dll", CharSet = CharSet.Unicode)] 
public static extern int SetWindowTheme(IntPtr hWnd, String pszSubAppName, String pszSubIdList); 

.ctor 
{
    System.Windows.Forms.Integration.WindowsFormsHost.EnableWindowsFormsInterop();
    System.Windows.Forms.Application.EnableVisualStyles();

    SetWindowTheme(MyControl.Handle, "Explorer", null); 
}