2009-04-14 6 views
5

J'ai un groupe de cases à cocher qui représentent toutes des sélections différentes du même type (pour mon exemple, ce sont tous des types de fichiers différents). J'ai l'impression que lier chacun à une propriété individuelle dans le ViewModel est exagéré, et je préférerais les lier tous à une collection et utiliser la syntaxe de liaison pour lier chaque case à un élément particulier dans la collection par clé. J'essaie de m'en tenir au modèle MVVM, donc je ne veux pas juste être paresseux et gérer l'événement Checked ou quelque chose comme ça.WPF MVVM Binding Checkbox.IsChecked à un élément nommé dans un Dictionary <string, bool>

Existe-t-il un moyen d'exprimer un chemin ou une clé dans une collection à l'aide de la syntaxe de liaison WPF? Par exemple, si j'expose un Dictionary<string, bool> appelé FileTypes en tant que propriété publique dans le ViewModel, existe-t-il un moyen pour moi de lier l'une des cases à cocher à FileTypes ["aspx"]? Et si j'avais une structure de données plus complexe comme Dictionary<string, Dictionary<string, int>>?

Répondre

3

Vous aviez presque - les déposer simplement entre guillemets l'argument indexeur:

{Binding FileTypes[aspx]} 

Une structure de données plus complexe serait tout simplement besoin d'une séquence d'indexeurs, par exemple

{Binding Foo[aspx][Bar]} 

Par ailleurs, une bonne ressource pour ce genre de choses est dans MSDN, sous WPF> Data> Liaison de données> Aperçu de liaison Déclarations - faites défiler jusqu'à « Liaison chemin Syntaxe » pour un résumé des notations et conventions vous pouvez utiliser dans un chemin de liaison.

Questions connexes