9
votes

Changer la forme du bouton WPF sans changer d'autres styles

Je voudrais changer la forme d'une touche WPF du rectangle rond par défaut à une autre forme (par exemple, une flèche), mais je veux garder le reste du style - de la couleur de remplissage, de la couleur de la frontière, des états de survol, etc. Je veux que le bouton ait les mêmes styles que tous les autres boutons réguliers (que je crois dépend de la version de Windows, de couleurs de thème du système, etc., ce n'est donc pas comme si je peux recréer le style de bouton à partir de zéro et du papier dur le Couleurs de droite).

Y a-t-il un moyen de faire ça?


0 commentaires

3 Réponses :


1
votes

Fabriquez une copie du Modèle de bouton par défaut , et simplement changer Le panneau par défaut à votre propre forme personnalisée.

Dans le cas du bouton, on dirait que vous devez remplacer la bordure avec quelque chose comme un chemin Définition d'une flèche .

depuis un chemin n'a pas de contenu, vous devrez probablement mettre la forme et le contenu dans un autre panneau qui permet aux objets de se chevaucher, tels qu'une grille.

Donc, votre résultat final ressemblera à quelque chose comme celui-ci xxx

au lieu de la valeur par défaut xxx


2 commentaires

Comment obtenir le "modèle de bouton par défaut"? L'article MSDN que vous avez associé à un modèle échantillon , mais ce n'est pas la valeur par défaut.


@Henryjackson Je pense que c'est la valeur par défaut que les couleurs. Par défaut, il tire des couleurs de SystemColors . Une autre alternative consiste à effectuer une copie du modèle de mélange d'expression.



1
votes

Vous devriez être capable de sous-classer la commande de bouton normale. Vous pouvez ensuite personnaliser le bouton sous-classé avec une forme personnalisée, mais toutes les autres propriétés seraient héritées. Cela vous permettrait de changer la forme pour votre bouton et rien d'autre.

Voici une bonne ressource pour créer un bouton personnalisé si vous vous mélangez:

http://msdn.microsoft.com/en-us/library/bb613598.aspx


1 commentaires

Pouvez-vous me donner un exemple de comment remplacer la limite? L'article MSDN montre comment créer un thème de zéro mélange, ce qui n'est pas tout ce que je veux faire.



0
votes

Si vous souhaitez hériter des couleurs / styles système par défaut pour une touche , vous pouvez utiliser templatedbinding S dans le bouton modèle . Par exemple, si vous souhaitez créer un bouton en forme personnalisé qui avait la même couleur d'arrière-plan que le système, vous pouvez utiliser ci-dessous: xxx

ellipse héritera ensuite de la couleur de fond de la touche , mais elle est définie.


1 commentaires

Cela obtient la couleur de fond à droite, mais c'est autrement un cercle. Il n'y a pas de frontière, sans plancher ou de clic, aucun brillant de gradient sur le contenu. J'essaie d'éviter de faire un bouton entier à partir de zéro.