2010-03-12 4 views
0

Dans une application WPF J'ai un ListView:Apparition d'un ListView WPF sous Windows Vista et Windows XP n'est pas le même

<ListView Name="ItemSelList" ItemsSource="{Binding ItemColl}" SelectionChanged="ItemSelList_SelectionChanged"> 
    <ListView.View> 
    <GridView> 
     <GridViewColumn Header="Date" Width="90" DisplayMemberBinding="{Binding Date}"/> 
     <GridViewColumn Header="Time" Width="90" DisplayMemberBinding="{Binding Time}"/> 
     <GridViewColumn Header="Description" Width="250" DisplayMemberBinding="{Binding Description}"/> 
    </GridView> 
    </ListView.View> 
</ListView> 

Lorsque l'application en cours d'exécution sous Windows Vista, tout est OK. Lors de l'exécution sous Windows XP - la taille de police par défaut des lignes de ListView est trop petite et les lignes de ListView ne changent pas de couleur lorsque l'utilisateur passe la souris dessus. Comment faire pour que l'apparence ListView sous Windows XP soit la même que sous Vista?

Répondre

3

Cela est dû au fait que WPF a sélectionné différents thèmes pour les deux systèmes d'exploitation. Les thèmes sont des styles par défaut basés sur le niveau du système d'exploitation. Vista vous obtient le thème Aero tandis que Windows XP vous obtient l'ensemble des thèmes Luna.

XP peut ne pas être capable de toute la clarté visuelle du thème Aero et le thème Luna peut paraître sous-estimé dans Vista et Windows 7, mais vous pouvez remplacer le thème avec un style simple. Définissez simplement un style pour votre ListView qui spécifie complètement l'apparence que vous voulez. Je pense (mais je ne suis pas certain) que Expression Blend a un moyen d'extraire les informations de thème pour vous.

Il semble que vous puissiez également remplacer le thème que WPF choisirait pour vous (bien que je ne l'ai pas essayé moi-même).

  1. Ajoutez une référence à l'assembly qui contient le thème correct. Pour Vista (Aero), par exemple, c'est PresentationFramework.Aero.
  2. Fusionnez dans le dictionnaire de ressources du thème à partir de l'assembly dans votre App.xaml. Changez la source pour qu'elle corresponde à l'assemblage et au nom de composant corrects. Vous pouvez généralement trouver le nom de composant correct en cherchant sur la version de Windows que vous voulez et "nom de thème wpf" ou quelque chose de similaire. Notez que ceci re-thème tous les contrôles dans votre application!

    <ResourceDictionary> 
        <ResourceDictionary.MergedDictionaries> 
         <ResourceDictionary Source="/PresentationFramework.Aero;component/themes/Aero.NormalColor.xaml" /> 
        </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
    

Si le désir est seulement de retheme une ListView, je fusionneriez le dictionnaire de ressources dans le ListView lui-même ou un élément parent immédiat.

+0

Merci, c'est très utile! +1 – rem

Questions connexes