Использование CreateParams и SetWindowTheme в ListView одновременно

Я использую функцию 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);
}

Спасибо

РЕДАКТИРОВАТЬ: я решил проблему, добавив вызов SetWindowTheme в OnHandleCreated void моего пользовательского ListView. Спасибо Гансу Пассанту.

0 ответов

Другие вопросы по тегам