Question

Je travaille sur une application WPF qui a un arbre qui représente un XML. Je charge le XML sur le XDocument, puis lie TreeView à cet objet.

Maintenant, utilisez le modèle de MVVM , I voulez fournir un ViewModel au-dessus de XDocument . Quelles sont certaines des choses que je devrais implémenter dans la classe ViewModel.

Je pense à,

  1. Les commandes routées qui se lient aux commandes ContextMenu sur le TreeView pour permettre l’ajout, la suppression, la modification, la modification de nœud, etc.
  2. Logique permettant de modifier les attributs et les noms de noeud de la vue.

Est-ce que je vais dans la bonne direction? Que dois-je faire d'autre pour le rendre plus propre, modulaire et en même temps facile à comprendre.

Devrais-je utiliser RoutedCommands ou implémenter l'interface ICommand et créer mes commandes? Que diriez-vous d'utiliser des propriétés attachées pour CommandBindings? est-il judicieux de le faire dans l'application Treeview dont je parle? Je suis un peu dépassé par les nombreuses options disponibles pour la mettre en œuvre.

Est-ce que quelqu'un a des liens, un exemple de code qui fait ce genre de chose? Une implémentation de référence peut être?

Était-ce utile?

La solution

Je suis avec toi. J'ai commencé avec

(ui) < - > (xml)

où xml est représenté par LINQy XElements et j'ai donc reçu une notification PropertyChange.

J'ai ensuite ajouté des classes d'assistance sans état pour m'aider à gérer xml (exposer les propriétés, valider les données, etc.). Je regrouperais des XElements dans ObservableCollections afin de pouvoir les lier.

En savoir plus sur M-V-VM et décidé de convertir mes classes d’aide en ViewModels. Problèmes: Les classes auxiliaires résident dans l'espace de noms du modèle de données, qui ne connaît rien de l'interface utilisateur. Les classes auxiliaires savent comment convertir une ligne de base de données en XElement, ViewModel ne devrait jamais le voir. Les classes auxiliaires traitent de XML. ViewModel ne devrait pas savoir ou s'en soucier.

J'envisage donc réellement de mettre en œuvre

(ui) < - > (viewmodel) < - > (assistant) < - > (xml)

mais je refuse de soulever des événements PropChange dans helper uniquement pour les relancer dans viewmodel.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top