2008-09-23 6 views
21

Je souhaite que mon application WPF soit skinnable, en appliquant un certain modèle XAML et les modifications à l'échelle de l'application, même pour les contrôles dynamiques ou les contrôles qui ne se trouvent même pas dans l'arborescence visuelle/logique.Quelle est la méthode recommandée pour habiller une application entière dans WPF?

Que puis-je utiliser pour réaliser ce type de fonctionnalité? Y a-t-il de bonnes ressources ou des tutoriels qui montrent comment cette tâche spécifique peut être accomplie?

Répondre

10

L'approche de base consiste à utiliser des ressources dans toute votre application et à remplacer de manière dynamique les ressources lors de l'exécution.

Voir http://www.nablasoft.com/alkampfer/index.php/2008/05/22/simple-skinnable-and-theme-management-in-wpf-user-interface/ pour l'approche de base

+0

Salut Maurice, ces deux liens sont maintenant 404. Y a-t-il une chance de trouver des remplaçants? – Matt

+0

@Matt https://web.archive.org/web/20130411050848/http://www.codewrecks.com/blog/index.php/2008/05/22/simple-skinnable-and-theme-management-in -wpf-user-interface – Xcodo

4

Le remplacement des ressources fonctionnera mais je trouve « skinning structurelle » pour être plus puissant! En savoir plus sur sur CodeProject ...

http://www.codeproject.com/KB/WPF/podder1.aspx

+0

Une vieille question et réponse mais, à moins que je me trompe, il semble que la méthode évoquée sur cette page repose également (au moins en partie) sur le référencement dynamique des ressources. –

2

J'ai trouvé le moyen d'appliquer des modèles génériques à tous les contrôles sans l'aide des touches de modèle. La solution consiste à utiliser le type de contrôle en tant que clé de style.

Exemple:

<Application.Resources> 
    <Style x:Key="{x:Type Button}" TargetType="{x:Type Button}"> 
     <Setter Property="Button.Background" Value="CornflowerBlue"/> 
     <Setter Property="Button.Template"> 
      <Setter.Value> 
       <ControlTemplate x:Name="MyTemplate"> 
        ... 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</Application.Resources> 

ici la clé de style est x: Key = "{x: Type Bouton}", de sorte que le style sera appliqué à tous les contrôles de bouton de type sans le contrôle déclarant la propriété Style être une ressource statique ou dynamique.

+4

Si vous ne spécifiez pas de clé x:, le TargetType est automatiquement utilisé comme clé. SEC! (J'adore CornflowerBlue aussi!) –

+2

En outre, certains morceaux étranges ont intégré dans les clés que vous avez juste besoin de savoir. Par exemple, les séparateurs dans les menus. http://devlicious.com/blogs/christopher_bennage/archive/2008/06/19/styling-separators-in-wpf.aspx –

Questions connexes