Pergunta

Tenho um aplicativo que estou desenvolvendo que reflete de perto o estágio de dispositivo do Windows 7. No estágio do dispositivo, abaixo do banner principal, há uma ListView contendo ações incorporadas como ListViewItems.

No meu aplicativo WPF, usei o WindowsFormShost para hospedar um WinForms ListView para que eu pudesse usar SetWindowTheme() nele e aplique o estilo Windows Vista/7.

Isso, no entanto, não funciona e não atinge o mesmo efeito que faz quando usado nos formulários do Windows.

Como posso alcançar a aparência do Windows 7 em uma ListView no WPF? Não estou procurando criar um estilo personalizado, então aplicá -lo, porque, francamente, é uma dor demais na bunda para continuar usando o WPF para este aplicativo.

Obrigado! :)

Foi útil?

Solução

Basta adicionar as seguintes linhas:

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

Outras dicas

Aparentemente, depois de cavar, a única resposta parece estar criando um controle personalizado no WPF.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top