2010-08-30 18 views
1

J'essaye de faire un peu de magie de liaison de données. J'ai une vue Envois qui répertorie les envois et fournit des capacités de filtrage et de commande sur la liste. La zone de chaîne de filtres, les filtres d'état de remise (cases à cocher) et les boutons de commande Radiobuttons sont liés aux propriétés du modèle ViewModel. Je veux ajouter la capacité d'enregistrer l'état et j'ai choisi de le faire en sauvegardant les états de contrôle dans un document xml. Auparavant, je l'ai fait auparavant avec un petit problème, en utilisant la liaison de données pour lire/écrire les valeurs d'avant en arrière.Lier le contrôle WPF à plusieurs sources (pas de multibinding traditionnel)

Cependant, maintenant j'ai un problème. Mes contrôles de filtre sont actuellement liés aux éléments du ViewModel. Je peux écrire du code qui change leur liaison de données du xml au ViewModel sur load et vice versa, mais ce serait salissant.

Y at-il un mécanisme en place que je peux utiliser pour obtenir la capacité de se lier à deux sources égales et de les mettre à jour en même temps?

Répondre

2

Cela semble être une préoccupation pour le modèle de vue. Pourquoi ne pas charger les valeurs enregistrées dans le modèle de vue, et demander au modèle de vue de décider quelles données exposer?

Ensuite, la vue n'a pas à se préoccuper de la gestion des données.

+0

Je pense que je vais travailler comme vous le décrivez. Pour les éléments liés au filtre, je vais stocker/récupérer le code XML dans le code de la machine virtuelle pour enregistrer l'état entre les sessions, pour d'autres articles non-ViewModel, je peux juste créer une base de données XML, tout en économisant sur Close. – CodeWarrior

1

Aucune information à ma connaissance. Mon avis: Je ne le ferais vraiment pas de toute façon - si votre datacontext est le viewmodel, et le viewmodel a des propriétés pour le filtre, vous devriez certainement persister et récupérer l'état viewmodel approprié pour garder l'état du filtres Essayer d'enregistrer controlstate, puis le récupérer, le définir, et définir le viewmodel basé sur le nouveau controlstate semble beaucoup plus de travail et beaucoup plus enclin aux bugs.