2008-12-24 8 views
0

J'ai une hiérarchie qui ressemble à ceci - Usine> machines> composants> contrôles où ">" peut être lu comme "contient une liste de".WPF question de conception impliquant treeview

Cela correspond très bien dans un TreeView en utilisant HierarchicalDataTemplates. Dites maintenant que je veux ajouter des cases à cocher à l'arbre, de sorte que l'utilisateur peut créer des "vues" de l'arbre qui nécessitent un contrôle. À l'heure actuelle mes modèles sont des données liées aux objets machine réelle/composants/contrôle, comme si ...

<HierarchicalDataTemplate DataType="{x:Type src:Component}" ItemsSource = "{Binding Path=Controls}"> 
    <StackPanel Orientation="Horizontal"> 
     <CheckBox IsChecked="False" /> 
     <TextBlock Text="{Binding Path=Name}"/> 
    </StackPanel> 
</HierarchicalDataTemplate> 

Je ne veux pas changer le code de mes cours la machine/composants/contrôle, être capable de gérer " voir "création". En d'autres termes, je veux garder le code "modèle de données" et le code d'interface utilisateur séparé. Par exemple pour gérer la case à cocher, j'ai besoin de le lier à une propriété IsSelected du contrôle. Je me suis retrouvé à ajouter un tas de propriétés et de code de notification à ces classes. L'autre alternative que j'ai essayé était de créer une classe "view" pour chaque machine/composant/classe de contrôle. Avec cette approche, j'ai fini par créer des copies des données dans les classes «vue» et devoir les synchroniser avec les données réelles. Quel est un bon moyen de le faire?

Répondre