Je vous écris une application WPF sur Windows XP et j'ai le thème de substitution par défaut avec le thème vista comme ceci:Override surchargée WPF Thème
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
var themerd = new ResourceDictionary();
themerd.Source = new Uri(@"PresentationFramework.Aero;V3.0.0.0;31bf3856ad364e35;component\themes/aero.normalcolor.xaml", UriKind.Relative);
Resources.MergedDictionaries.Add(themerd);
}
Et cela fonctionne très bien la plupart du temps. Lorsque j'utilise le contrôle comme un bouton:
<Button />
Le style a l'air bien, mais si j'utiliser un bouton avec un style différent comme celui-ci:
<Button>
<Button.Style>
<Style TargetType="Button">
<Setter Property="Width" Value="80" />
</Style>
</Button.Style>
</Button>
Le style remplacera le style de thème spécifié avec le style standard WinXP au lieu de construire sur le dessus. Ceci est extrêmement limitant pour moi. Y a-t-il un moyen d'éviter ce problème?
Merci, votre réponse a été très utile. Cette zone semble manquer de WPF. Quelle option utilisez-vous habituellement pour résoudre ce problème? –
Option 2 est très cool, dans une certaine mesure, il contourne même le problème de ne pas être à BasedOn DynamicResources. –
Je résous normalement le problème en expliquant au client qu'il est préférable de rester avec le thème actuel du système d'exploitation parce que les fenêtres sembleront "normales" à l'utilisateur final. Cependant, j'ai utilisé l'option 2 et l'option 3 dans les situations où j'ai besoin d'une section de l'interface utilisateur à redéfinir, mais une section interne de l'interface utilisateur (comme un popup) pour * ne * pas être restylée. –