2009-10-16 6 views
0

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

0

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

+0

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

0

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.

+0

Cela ressemble à un défaut de conception majeur dans WPF pour moi. – bitbonk