6
votes

Comment modifier le style par défaut d'un bouton sans WPF revertir de Aero en classique?

J'ai ajouté présentationFramework.aero à mes dictionnaires fusionnés app.xaml, comme dans ... XXX

J'essaie de modifier l'apparence par défaut des boutons simplement. Je mets ce style dans mon buttonResourcedictionnaire: xxx

Tous les boutons ont maintenant le remplissage correct et le texte audacieux, mais ils ont l'air "classique", pas "Aero". Comment puis-je réparer ce style pour que mes boutons ont tous l'air Aero, mais aussi ces changements mineurs? Je préférerais ne pas avoir à définir la propriété style pour chaque bouton.

update

J'aurais dû mentionner cela dans La première place, mais si j'essaie d'utiliser basé sur , comme indiqué ci-dessous, je reçois un StackoverflowException : xxx

Cela fonctionnerait normalement, mais pas avec les dictionnaires Aero fusionnés. Si je commente ces dictionnaires, l'exception disparaît.

Mise à jour 2

si je Ajoutez un attribut x: clé et définir manuellement le style, il fonctionne correctement (style Aero avec remplissage et audacieux), mais comme je l'ai dit, je préférerais que le style soit automatiquement appliqué dans le monde entier à tous les boutons. .

update 3

Je viens de découvrir une nouvelle ride. Dans mon application, ButtonResourcedIndictionary.xaml est placé dans une bibliothèque de classe (c'est-à-dire dans un projet externe). Si je déplace ce fichier dans un dossier local, tout fonctionne bien. Donc, le problème semble être une mauvaise interaction causée par la référencement de divers dictionnaires de ressources externes. Je corrige mon app.xaml Code Snippet (ci-dessus) pour refléter ce buttonRésourcecingictionnel est en fait défini à l'extérieur.


0 commentaires

3 Réponses :


0
votes

Utilisez l'attribut basé sur hériter des propriétés du style Aero. Cela devrait résoudre votre problème.

<Style
  BasedOn="{StaticResource {x:Type Button}}"
  TargetType="{x:Type Button}"> 
    <Setter Property="Padding" Value="3" /> 
    <Setter Property="FontWeight" Value="Bold" /> 
</Style>


1 commentaires

En fait, j'ai essayé cela, mais pour une raison quelconque, il provoque un StackoverflowException . Et, intéressant, si je commente les dictionnaires Aero fusionnés, l'exception ne se produit pas. Donc, pour une raison quelconque, lorsque vous fusionnez dans Aero, vous ne pouvez pas baser un style dessus.



0
votes

Basé sur vos mises à jour, vous pouvez le faire (certes il est horriblement laid): xxx


3 commentaires

Merci, Abe, mais cela provoque toujours un StackoverflowException .


Manquant une cornue de fermeture } doit être: