2009-09-09 2 views
1

J'ai créé une application WPF avec de nombreux boutons.Wpf ImageButtons?

Maintenant, le client veut changer tous les boutons en icônes. Par exemple: Tous les boutons OK doivent avoir la même icône, tous les btns d'annulation et ainsi de suite.

Je veux mettre dans tous les boutons style = "{} StaticResource ButtonStyle_OK", style = "{StaticResource ButtonStyle_OK}" etc.

Maintenant, ma question est en général ce que dois-je placer dans ces styles

<Style x:Key="ButtonStyle_OK" TargetType="Button"> 
    <!-- What comes here? -->     
</Style> 

Je suis affraid Je vais changer tous les boutons de mon application à l'image et utiliser événement MouseDown pour un clic, serait-ce stupide?

NOTES: Je veux que les boutons soient une image - pas un bouton qui contient une image (c'est-à-dire que je ne veux pas le cadre du bouton original), en parlant de la forme. Je veux que ces boutons/styles soient réutilisables.

Répondre

2

Jetez un oeil à cet article MSDN sur le style - http://msdn.microsoft.com/en-us/library/ms745683.aspx

Je pense que vous pourriez être en mesure d'obtenir une certaine traction en lisant la section ControlTemplate. Comme l'a noté Chris, les styles peuvent également entrer dans un dictionnaire de ressources et être appliqués globalement à tous les boutons en omettant une clé. MISE À JOUR: Vous n'aurez pas besoin d'utiliser l'image avec un événement click, l'utilisation du ControlTemplate vous permettra de définir plus précisément l'apparence du bouton. Un autre exemple - http://mrpmorris.blogspot.com/2008/04/wpf-custom-button-templates.html

3

les mettre dans un dictionnaire de ressources, tout ce que vous devez faire est de swap sur des dictionnaires pour changer le style et à peu près rien à voir avec le côté de l'interface utilisateur des boutons, etc.

Je vous penser veulent un modèle de contrôle dans la balise (s), quelque chose comme ceci:

<Setter TargetType="{x:Type Button}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type Button}"> 
      </ControlTemplate> 
     </Setter.Value> 
    <Setter Property="Template"> 
</Setter> 

vous devriez être en mesure de trouver le modèle par défaut en ligne (MSDN) relativement facile. Je recommanderais d'utiliser Blend pour le faire (si vous le pouvez) - cela peut rendre les choses plus faciles.