2010-10-12 4 views
0

J'essaie d'implémenter des vues personnalisées qui sont spécifiques à une application sans aucun succès. Voici mon problème: J'ai besoin d'une vue personnalisée car je voudrais que l'utilisateur puisse changer de vue dynamiquement au moment de l'exécution. J'ai besoin d'une vue personnalisée (par opposition aux seuls modèles de données), car la présentation listview doit changer aussi bien que le modèle de contrôle et le modèle de données. Tous les turborais disent d'implémenter des classes personnalisées dérivées de viewbase et de surcharger DefaultStyleKey et ItemContainerDefaultStyleKey pour retourner une ComponentResourceKey définie dans generic.xaml. Cependant, le problème est que j'essaye de créer plusieurs vues qui sont très spécifiques à cette application. certaines brosses et polices seront cohérentes à travers l'application et les vues personnalisées les utiliseront. c'est-à-dire que j'ai le niveau d'application Forebrush, Shadowbrush, Deepshadowbrush, TextDecorator, etc. et je veux que les vues les utilisent. Si la vue sera définie dans un fichier generic.xaml externe, il s'agira d'un balisage très compliqué à lier à ceux-ci. Et d'ailleurs, cela les rendrait spécifiques à l'application de toute façon (s'ils se lient à ces pinceaux). Quelqu'un a-t-il une idée sur la manière de définir des styles pour les vues internes à l'application qui pourront être changées à l'exécution?WPF vue personnalisée sans Generic.xaml

Répondre

0

Je suis légèrement confus sur vos détails, mais vous pouvez définir le Style d'un ListView à l'exécution en tant que tel ... où CustomStyle est un style prédéfini que vous souhaitez appliquer à la ListView. La DefaultStyleKey est applicable à un contrôle personnalisé (différent de UserControl). Donc, disons que vous voulez un nouveau contrôle appelé Widget. Vous auriez besoin de définir DefaultStyleKey pour ce Widget car il n'a pas de style par défaut défini. Un UserControl est une collection de contrôles, par conséquent, il n'a pas un style prédéfini en tant que tel. En outre, vous pouvez créer un ResourceDictionary pour séparer vos styles. Vous pouvez ensuite les fusionner via l'App.xaml en tant que tel ...

<Application.Resources> 
     <ResourceDictionary> 
      <ResourceDictionary.MergedDictionaries> 
       <ResourceDictionary Source="Themes/Generic.xaml"/> 
       <ResourceDictionary Source="Themes/ListViewStyles.xaml"/> 
      </ResourceDictionary.MergedDictionaries> 
     </ResourceDictionary> 
    </Application.Resources> 
+0

Je ne m'explique probablement pas très bien. J'ai besoin de vues personnalisées (dérivées de ViewBase) Parce que j'ai besoin de changer presque tout dans la vue (pas la listbox) comme les événements de sélection, et le panneau. Je pourrais être en mesure de les définir individuellement sur la liste au lieu de fournir une vue personnalisée, mais cela ne me donne pas le regroupement logique requis. Je souhaite que chaque vue possède son propre conteneur de disposition, ses événements de sélection, ses animations, ses conteneurs et enfin ses modèles de données. Je ne peux pas utiliser un dictionnaire externe (generic.xaml) comme décrit ci-dessus – Fragilerus

+0

Donc, la racine du problème est de savoir comment obtenir les styles par défaut pour vos types de contrôle personnalisé sans utiliser Generic.xaml? –

Questions connexes