J'ai ajouté présentationFramework.aero à mes dictionnaires fusionnés app.xaml, comme dans ... J'essaie de modifier l'apparence par défaut des boutons simplement. Je mets ce style dans mon buttonResourcedictionnaire: p> 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é code> style code> pour chaque bouton. P> update strong> p> J'aurais dû mentionner cela dans La première place, mais si j'essaie d'utiliser Cela fonctionnerait normalement, mais pas avec les dictionnaires Aero fusionnés. Si je commente ces dictionnaires, l'exception disparaît. P> si je Ajoutez un attribut update 3 strong> p> 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. P> P> basé sur code>, comme indiqué ci-dessous, je reçois un
StackoverflowException code>: p>
x: clé code> 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. . P>
3 Réponses :
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>
En fait, j'ai essayé cela, mais pour une raison quelconque, il provoque un StackoverflowException code>. 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.
Basé sur vos mises à jour, vous pouvez le faire (certes il est horriblement laid):
Merci, Abe, mais cela provoque toujours un StackoverflowException code>.
Manquant une cornue de fermeture } code> doit être: