42 votes

Thème Windows 7 pour WPF?

Est-il possible de faire une application WPF ressemble, il est en cours d'exécution sur Windows 7, même si il fonctionne sur XP? Je suis à la recherche d'un certain genre de thème, je peux juste coller. Je suis conscient des thèmes de projet sur Codeplex (http://www.codeplex.com/wpfthemes), mais il manque de soutien pour l' DataGrid, ce qui est quelque chose que j'ai gravement besoin. Je pensais peut-être que le thème Windows 7 serait juste un simple port, ou existe dans un fichier quelque part déjà. Toutes les informations que vous avez (même si c'est une mauvaise nouvelle) serait très appréciée.

Mise à jour

À l'aide de @Lars Truijens idée, j'ai été en mesure d'obtenir Windows 7 regarder pour les commandes principales, mais malheureusement il ne fonctionne pas pour le WPF Toolkit DataGrid de contrôle, dont j'ai besoin.

DataGrid ressemble à ça avec le thème Aero

Windows XP-look DataGrid

DataGrid devrait ressembler à ceci

Windows 7-look DataGrid

Donc, je suis toujours à la recherche d'une solution à ce problème si quelqu'un a des idées. Peut-être que quelqu'un a construit une extension pour le thème Aero qui couvre le WPF toolkit contrôles? Là encore, toutes les informations que vous avez beaucoup apprécié.

Mise à jour 2 - Problème résolu!

Pour obtenir le thème Aero de travailler avec WPF Toolkit contrôles, vous avez juste besoin d'ajouter un deuxième Aero dictionnaire, de sorte que votre Application.xaml devrait maintenant ressembler à ceci.

<Application.Resources>
    ...
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary
                Source="/PresentationFramework.Aero;component/themes/Aero.NormalColor.xaml" />
            <ResourceDictionary
                Source="pack://application:,,,/WPFToolkit;component/Themes/Aero.NormalColor.xaml" />
            ...
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

Aussi, je voudrais vous recommandons de tourner le quadrillage dans votre DataGrid des contrôles (parce qu'ils sont horribles):

<DataGrid  GridLinesVisibility="None" ...>

56voto

Lars Truijens Points 24005

WPF est livré avec la norme thèmes de Windows sur toutes les versions de Windows. Par exemple, vous pouvez avoir le thème Aero (qui Vista et Windows 7) sur Windows XP avec les étapes suivantes:

  1. Ajouter PresentationFramework.Aero à votre demande des références de la liste comme une nécessite
  2. Modifier votre Application.xaml

à partir de ce

<Application.Resources>
  <!-- Your stuff here -->
</Application.Resources>

pour ce

<Application.Resources>
  <ResourceDictionary>
    <!-- Put your stuff here instead -->

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

Source: http://mrpmorris.blogspot.com/2008/05/using-vista-aero-theme-in-xp-wpf-apps.html

D'autres alternatives ci-dessous. Veillez à ajouter le montage correspondant à votre application, la liste de référence comme l'exige.

<ResourceDictionary Source="/PresentationFramework.Aero;component/themes/Aero.NormalColor.xaml"/>
<ResourceDictionary Source="/PresentationFramework.Classic;component/themes/Classic.xaml"/>
<ResourceDictionary Source="/PresentationFramework.Royale;component/themes/Royale.NormalColor.xaml"/>
<ResourceDictionary Source="/PresentationFramework.Luna.Homestead;component/themes/Luna.Homestead.xaml"/>
<ResourceDictionary Source="/PresentationFramework.Luna.Metallic;component/themes/Luna.Metallic.xaml"/>
<ResourceDictionary Source="/PresentationFramework.Zune;component/themes/Zune.NormalColor.xaml"/>

5voto

GuYsH Points 113

Un ajout à la réponse de Lars et à la mise à jour de DanM:

Lors du déploiement, vous devez ajouter la DLL aero au répertoire d'installation.

Vous pouvez le faire en accédant aux propriétés de PresentationFramework.Aero que vous avez ajouté aux références et en définissant CopyLocal=True . Ensuite, vous devrez accéder à l'outil de déploiement que vous utilisez (j'adore WIX ...) et l'ajouter à la liste des fichiers déployés.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X