Gestionnaire de thèmes pour applications wpf

Soyez le premier à donner votre avis sur cette source.

Vue 9 627 fois - Téléchargée 1 102 fois

Description

Ce gestionnaire permet d'offrir à l'utilisateur la liberté de choisir son thème pour son application WPF.
Il suffit de lui proposer une combo dans l'application pour lui permettre de choisir un thème parmi une liste de thèmes disponibles, le gestionnaire se chargera de stocker son choix en fichier.config et de le charger au lancement de l'application.

Source / Exemple :


'Le gestionnaire complet se trouve dans le projet Dll WpfThemes.Core.

'Pour charger le gestionnaire au lancement de votre application, il suffit de l'appeler 
'dans le StartUp de l'Application :
Class Application
    Private Sub Application_Startup(ByVal sender As Object, 
                                    ByVal e As System.Windows.StartupEventArgs) Handles Me.Startup
        'Instanciation du thème manager pour chargement de la liste des thèmes disponibles 
        WpfThemes.Core.ThemesManagerVueModele.Instance.Init()
    End Sub
End Class

'Pour laisser le choix à l'utilisateur, il suffit d'une combo et lier son DataContext au gestionnaire :
'dans MainWindow.xaml
     <ComboBox Name="cboThemes" Width="115" Height="23" Cursor="Hand" 
               ItemsSource="{Binding Path=Themes}" SelectedItem="{Binding Path=ThemeCourant}"  />

'dans MainWindow.xaml.vb
    Private Sub MainWindow_Loaded(ByVal sender As Object, 
                                  ByVal e As System.Windows.RoutedEventArgs) Handles Me.Loaded
        cboThemes.DataContext = WpfThemes.Core.ThemesManagerVueModele.Instance
    End Sub

'on peut également définir un style par défaut (autre que le 1er fichier du dossier Themes) 
'dans le .config :
    <appSettings>
        <add key="ThemeDefaut" value="BureauBlue" />
    </appSettings>

'note : si vous utilisez le designer de Visual Studio pour créer vos écrans, il est interessant 
' d'avoir le thème par défaut chargé directement en ressource de l'Application :
     <Application.Resources>
         <ResourceDictionary Source="Themes\BureauBlue.xaml" />
     </Application.Resources>

Conclusion :


J'utilise les thèmes mis gracieusement à disposition sur CodePlex :
http://wpf.codeplex.com/wikipage?title=WPF%20Themes
J'y ai apporté quelques modifications, comme je l'ai expliqué dans ma source "Visualisation des thèmes WPF et ressources partagées".
Encore un grand merci à l'auteur de ces thèmes :-))

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Il n'y a pas beaucoup de [/ codes sources] en WPF (8 seulement) et la plupart ne sont que des esquisses de débutants. C'est dommage car les exemples sont très utiles pour les développeurs. Mais WPF ne semble pas rencontrer beaucoup de succès.
Je n'ai pas réussi à ouvrir le source qui nous est proposée ici par nbaduraux. Je n'ai pas vu de fichier .sln et je suis sous Visual 2015. Bon, ça date de 2010 !
Je regrette vraiment cette désaffection des développeurs pour WPF car il y a de belles perspectives de développement multimédia qui ne sont pas possibles avec les Forms habituelles.
Messages postés
14476
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 juillet 2020
420 > Mico
Bonjour, je pense que WPF ne cible pas le codeur VB.Net.

Le vrai langage .Net, c'est le C#, et WPF a été écrit pour les codeurs C# qui se plaignaient de ne plus pouvoir laisser les designeurs designer, comme c'est possible en C++. Il est apparu avec la framework 3.

C# est un langage "tout objet", qui, du coup, se prête parfaitement au MVC, donc WPF a été conçu avec le binding comme socle de base.

VB.Net est un "déguisement", destiné au départ à capter les codeurs VB6.
Il tolère un fonctionnement intermédiaire (pour ne pas dire un peu bâtard) entre le "tout objet" de C#, et l'orienté objet (pour les rares qui mettent un doigt dans l'objet) voire le séquentiel de VB6.

Les VB6istes se sont vite rendu compte qu'à l'instar de l'aspartame qui a le gout et la couleur du sucre sans en être, VB.Net est bien plus différent de VB6 que le sont VBA ou VBS. Une grande majorité n'ont pas franchi le pas et les quelques "courageux" qui ont osé ont bien du mal a intégrer les objets, le binding etc... (Je ne dit pas ça méchamment, je constate, il suffit de lire les questions sur le forum).

Quand au nouveaux codeurs, qui n'ont eux jamais connus VB6 (ça fait 18 ans qu'il n'est plus vendu...), se sont majoritairement des autodidactes, qui suivent des tutos sur le net, souvent écrits par d'anciens VB6istes. Sur développez.com par exemple, le cours de PLassere est bien, mais il considère que l'objet est un effet de mode, le cours d'openclassroom, lui, traite plus l'objet mais, il est truffé d'erreurs et certains codes exemples ne compilent pas....

Tout ça explique selon moi, la désaffection des codeurs vb.net pour le WPF.

Par contre, on trouve foison d'exemples (principalement sur les forums anglophones) et de cours (celui de Thomas LeBrun par exemple) en C#.
Mais là encore, il faut distinguer le parcours des codeurs.
  • les autodidactes qui codent en amateur (au bon sens du terme) restent souvent en Winform,
  • les "comme moi" autodidactes, mais codant pour le travail, qui évoluent en fonction du besoin. Tant que les applis qu'on leur demande ne nécessitent pas de design trop particulier, ils restent en Winform et passent au WPF, soit par curiosité soit parce qu'un projet le nécessite (dans mon 8 ans en Winform pour des projets "simples" et codés seul, puis un gros projet en équipe, noyau C++ win32, wrap CLR, "périphériques" C# et interfaces WPF (1 serveur, 3 types de clients) depuis 2 ans, aujourd'hui je le maintiens presque seul).
  • les pros qui ont appris à l'école et n'ont du pas besoin des forums.


Quand au projet de nbaduraux, je l'ai téléchargé et testé avant d'écrire tout ça.
Il marche très bien, et plutôt bien codé, ce qui contredit tout mon plaidoyer.
Il fait exactement ce qui est décrit, à savoir appliquer un thème à un interface quelconque (dans le bons sens du terme, toujours) par binding.

As tu bien télécgargé le zip du projet complet avec le bouton bleu
?
Messages postés
14677
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
11 juillet 2020
143 > Mico
Il y a bien un fichier WpfThemes.Gestionnaire.sln à la racine du zip pourtant.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.