2010-10-01 6 views
0

Dans la grille de données WPF, est-il possible de permettre à l'utilisateur de couper ou de supprimer une colonne?La grille de données WPF coupe une colonne (MVVM)

Si oui, y a-t-il un support intégré?
Si non, comment je fais? Un exemple d'illustration sera très agréable.

Répondre

0

Vous avez besoin de deux morceaux de fonctionnalité:

  • un pour l'utilisateur de sélectionner/désélectionner les colonnes qu'ils veulent voir dans la grille
  • un pour agir sur cette information et fait masquer/afficher les personnes affectées colonnes

Malgré le fait que vous utilisez MVVM, cela est raisonnablement facile à faire, car il peut être géré dans la vue. C'est juste les gens, la VM n'a pas besoin de savoir quoi que ce soit à ce sujet - c'est purement une chose liée à la vue, rien à voir avec les données détenues par la machine virtuelle. Je ne vais pas donner d'exemple de code, vous pouvez le faire vous-même. Votre interface utilisateur peut être aussi simple qu'un menu contextuel sur un clic droit dans la colonne, avec une option "Masquer cette colonne". Bien sûr, c'est un processus irréversible à sens unique, mais c'est peut-être tout ce que vous voulez et la colonne reste cachée jusqu'à ce que l'utilisateur exécute l'application.

Une autre option consiste à afficher une fenêtre enfant modale avec suffisamment d'informations pour que l'utilisateur puisse sélectionner les colonnes qu'il souhaite afficher ou masquer. Une fois encore, cela peut être déclenché à partir d'un élément de menu contextuel ou d'une autre action de l'interface utilisateur. À ce stade, vous pouvez énumérer les colonnes de la grille, créer une liste d'objets de données avec des informations sur chaque colonne (comme le nom ou l'en-tête de colonne et sa visibilité), créer une instance du contrôle approprié pour afficher cette information.), attribuez-lui les objets de données (ViewModel), puis insérez la vue dans la fenêtre enfant modale. À la fermeture de la fenêtre, vous pouvez récupérer ces données et les parcourir en affichant ou en masquant les colonnes selon la sélection de l'utilisateur. N'oubliez pas que cela peut toujours se produire dans le code derrière la vue d'origine. Si vous utilisez une région ou un gestionnaire d'interface utilisateur comme Prism, la fenêtre enfant dont je parle peut être gérée via cela.

+0

C'est génial !! Puis-je avoir l'exemple de code – GuruC

+0

@Guru - désolé, mais non. Je viens juste de terminer une longue journée de travail et je ne veux pas créer de petits exemples de projets pour le moment. Je vous ai donné une explication raisonnablement complète qui devrait vous aider à démarrer, je vous suggère de faire un essai vous-même et ensuite de rechercher des problèmes spécifiques au fur et à mesure que vous les rencontrez. – slugster

+0

Eh bien, cela doit être sur le commentaire le plus inutile que j'ai vu depuis un moment. Aucun code d'échantillon, aucune connaissance de MVVM et pas beaucoup d'utilisation en général. –

Questions connexes