我正在使用 SetWindowTheme 函数 (uxtheme.dll) 使我的 ListView 看起来像 Windows 7 本机。当我对它进行排序时,我不得不使用 CreateParams 的东西来防止 ListView 闪烁。它起作用了,但是当我使用该 CreateParams 代码时,SetTheme 不再起作用。有没有办法同时使用 Windows 7 原生主题和 CreateParams?
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x02000000; // Turn on WS_EX_COMPOSITED
return cp;
}
}
[DllImport("uxtheme.dll", ExactSpelling = true, CharSet = CharSet.Unicode)]
private static extern int SetWindowTheme(IntPtr hwnd, string pszSubAppName, string pszSubIdList);
public MainWindow()
{
InitializeComponent();
SetWindowTheme(listView1.Handle, "Explorer", null);
}
谢谢
编辑: 我通过在我的自定义 ListView 的 OnHandleCreated void 中添加一个 SetWindowTheme 调用解决了这个问题。感谢汉斯帕桑特。