Lorsque je remplace le style/controltemplate par défaut d'un contrôle WPF standard dans le mélange en utilisant "Modifier une copie" sans le modifier (en créant simplement une copie locale de if), cela va-t-il déjà casser les thèmes dans certains scénarios? En d'autres termes, différents thèmes fournissent-ils différents modèles de contrôle et/ou définitions de style pour les contrôles standard? Comment puis-je m'assurer que mes styles/controltemplates respectent les thèmes?Est-ce que les styles/contrôles par défaut remplacent les thèmes?
Répondre
Oui, cela casse les thèmes;
Oui, différents thèmes offrent différents styles de contrôles. Si vous avez MS Blend vous pouvez les trouver dans le dossier de Blend (par exemple dans C: \ Program Files \ Microsoft Expression \ Blend 3 \ SystemThemes \ Wpf)
Pour respecter la thématisation, vous devez également créer un style par thème pour votre contrôle . Il y a many resources sur le contrôle personnalisé et le support des thèmes. Juste pour en mentionner un: WPF: Changing control style based on the system theme
En tant que développeur, vous souhaitez créer vos contrôles en termes de fonctionnalité. Utilisez les styles de contrôle par défaut partout. Ensuite, laissez les pro gérer l'aspect graphique de celui-ci. Si vous remplacez ControlTemplate d'un contrôle, vous êtes déjà occupé par les thèmes.
Si vous muck autour avec ControlTemplates essayer de garder à l'approche standard, sinon une fois le concepteur graphique commence son travail sur l'application, il/elle va jurer à vous :)
Les thèmes sont des collections de styles qui ciblent contrôles individuels et redéfinir leur look-and-feel. Tout contrôle pour lequel vous avez fourni un ControlTemplate ne l'appliquera pas ou ne sera pas compatible avec le pack de thèmes (selon que vous accédez au thème par x: Nom ou par Type)
Si vous remplacez DataTemplates, vous allez bien cependant. Ceci, vous pouvez le faire sans vous soucier de l'interférence thématique.
Cela ressemble à un défaut de conception majeur dans WPF pour moi. – bitbonk
Connaissez-vous une astuce où je pourrais étendre un contrôle existant (par exemple faire une ImageButton en dérivant de Button) mais garder tout le thématisation? – bitbonk