WPF et ObservableCollection<T>
J'ai un ObservableCollection<IRuleCondition>
que je veux afficher - le IRuleCondition
interface est utilisée par 2 classes différentes que je veux afficher, un RuleCondition
qui affiche simplement une condition de la règle (infos telles que la priorité, de la propriété à vérifier et ainsi de suite), et une RuleConditionGroup
, qui peut contenir 2 ou plus RuleConditions
, regroupés de telle manière que les conditions pourraient correspondre, ou tous etc.
Dans le XAML, je me demandais est-il un moyen pour afficher un autre ListView.ItemTemplate
en fonction de quel type est qu'il rencontre dans la ObservableCollection<IRuleCondition>
? Ou aurais-je besoin de mettre en œuvre deux ObservableCollection
s?
OriginalL'auteur KingTravisG | 2013-03-29
Vous devez vous connecter pour publier un commentaire.
Voici un exemple simple de la façon dont cela fonctionne
C'est la façon dont les objets sont définis
C'est le MainWindow code derrière
C'est le MainWindow XAML
Comme vous pouvez le voir il y a deux datatemplates un Manager et un pour les Employés
Et comment cela est de la merde sortie ressemble. Notez que le vert sur fond rouge et extra champ affiché pour l'Employé par rapport à la gestionnaire de
Essayez de désactiver toutes les exceptions et regardez la fenêtre de sortie pour la liaison des échecs
Essayez maintenant - pour une raison quelconque, quand j'ai fait tous le DataTemplate des trucs dans le fichier de ressources et dans la principale .fichier xaml, il a travaillé pas de problème!
Enfin eu... s'avère ResourceDictionary fichier doit être définie comme une "Page" plutôt que de "Ressource" et soudain, tout fonctionne maintenant, merci! 🙂
OriginalL'auteur parapura rajkumar
Il suffit de définir deux DataTemplates dans la section Ressources, un pour chaque RuleCondition type.
msdn.microsoft.com/en-us/library/ms742521.aspx Désolé, j'ai oublié le lien vers l'exemple que j'ai utilisé!
OriginalL'auteur Kai Wang
1) Créer votre deux différents modèles de données, comme vous le dites que vous l'avez déjà fait.
2) Créer un personnalisé DataTemplateSelector de choisir le modèle approprié.
L'un de vos commentaires états-vous que vous obtenez une erreur à partir de votre DataTemplateSelector. Vérifiez que vous êtes à la mise en œuvre de la classe correctement, peut-être coller votre mise en œuvre. Il devrait être assez petite et simple.
OriginalL'auteur Greg D