2009-10-18 6 views
1

J'ai une application que je suis en train de développer qui reflète de près la scène Device de Windows 7. Dans Device Stage, sous la bannière principale, il y a une ListView contenant des actions incorporées comme ListViewItems.L'utilisation de SetWindowTheme() sur les contrôles dans WindowsFormsHost dans WPF?

Dans mon application WPF, j'ai utilisé WindowsFormsHost pour héberger un WinForms ListView afin que je puisse utiliser SetWindowTheme() et y appliquer le style Windows Vista/7.

Toutefois, cela ne fonctionne pas et n'obtient pas le même effet que lorsqu'il est utilisé dans Windows Forms.

Comment puis-je obtenir l'aspect de Windows 7 sur un ListView dans WPF? Je ne cherche pas à créer un style personnalisé puis l'appliquer car franchement c'est trop pénible dans le cul pour continuer à utiliser WPF pour cette application.

Merci! :)

Répondre

3

il suffit d'ajouter les lignes suivantes:

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

Apparemment après avoir creusé, la seule réponse semble bien être de créer un contrôle personnalisé dans WPF.

Questions connexes