J'ai une classe User et une classe Author qui étend l'utilisateur. J'ai un ObservableCollection < L'utilisateur > étant affiché dans un ListBox. Pour cela, j'ai un DataTemplate pour afficher chaque élément et un autre pour afficher chaque élément sélectionné. J'ai également une colonne de TextBoxes qui sont liés aux propriétés de la propriété ListBox.SelectedItem. Jusqu'ici tout va bien.Dois-je utiliser des DataTemplates ou un UserControl pour afficher différents contrôles pour les classes étendues?
Pour l'instant, j'affiche des contrôles supplémentaires dans la colonne et DataTemplates si l'utilisateur sélectionné est un auteur et tout fonctionne bien, mais je triche. J'ai ajouté une propriété booléenne IsAuthor dans la classe User afin que je puisse lier à elle et déterminer si un utilisateur était un auteur. Je sais que c'est faux, mais je ne pouvais pas trouver d'autre moyen de le faire, alors ma première question est de savoir comment afficher les classes étendues différemment de la classe de base? J'ai essayé un DataTemplate différent pour le type Auteur, mais cela n'a jamais fonctionné ... peut-être parce que la collection était de type Utilisateur? La deuxième question est de devrais-je avoir tous les nombreux contrôles TextBox dans la colonne dans un contrôle UserControl et modifier les contrôles liés à la visibilité de l'auteur, ou en quelque sorte les mettre dans un DataTemplate et en créer un pour chaque type? J'utilise actuellement la première méthode et le problème est que chaque contrôle lié à une propriété Auteur lance des erreurs (je peux les voir dans la fenêtre de sortie dans Visual Studio) lorsque l'élément actuellement sélectionné n'est pas un auteur.
Cela aide en effet. Merci beaucoup pour votre explication très claire. Je pense que vous avez également par inadvertance répondu à une autre de mes questions posées ici: http://stackoverflow.com/questions/4355045/-there-quelquechose-en-wpf-similar-to-style-basedon-for-datatemplate/4356909 # 4356909 Je vais modifier le post pour vous donner un crédit. – Sheridan
Toujours heureux d'aider :) – Liz