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

发布于 2024-08-07 21:50:28 字数 392 浏览 4 评论 0原文

我正在开发一个应用程序,它与 Windows 7 的设备阶段非常相似。在 Device Stage 中,主横幅下方有一个 ListView,其中包含体现为 ListViewItems 的操作。

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

然而,这不起作用,并且无法达到与在 Windows 窗体中使用时相同的效果。

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

谢谢! :)

I have an application I'm developing which closely mirrors Windows 7's Device Stage. In Device Stage, beneath the main banner there is a ListView containing actions embodied as ListViewItems.

In my WPF application, I used WindowsFormsHost to host a WinForms ListView so that I could use SetWindowTheme() on it and apply Windows Vista/7 styling to it.

This, however, does not work and doesn't achieve the same effect it does when used in Windows Forms.

How can I achieve the Windows 7 look on a ListView in WPF? I'm not looking to create a custom style then apply it because frankly that's too much of a pain in the ass to continue using WPF for this app.

Thanks! :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

月牙弯弯 2024-08-14 21:50:28

只需添加以下行:

[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); 
}

Just add the following lines:

[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); 
}
白鸥掠海 2024-08-14 21:50:28

显然,经过深入研究后,唯一的答案似乎确实是在 WPF 中创建一个自定义设计的控件。

Apparently after digging around, the only answer does indeed appear to be creating a custom-designed control in WPF.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文