2009-04-14 15 views
5

Ho un gruppo di checkbox che rappresentano tutte diverse selezioni dello stesso tipo (per il mio esempio, sono tutti tipi di file diversi). Mi sembra che legare ciascuno a una singola proprietà nel ViewModel sia eccessivo e preferirei associarli tutti a una raccolta e utilizzare la sintassi dell'associazione per associare ciascuna casella di controllo a un particolare elemento della collezione per chiave. Sto cercando di attenermi al pattern MVVM, quindi non voglio solo diventare pigro e gestire l'evento Checked o qualcosa del genere.WPF MVVM Binding Checkbox.IsChecked a un oggetto denominato in un dizionario <string, bool>

Esiste un modo per esprimere un percorso o una chiave all'interno di una raccolta utilizzando la sintassi del binding WPF? Ad esempio, se esagero uno Dictionary<string, bool> chiamato FileTypes come proprietà pubblica nel ViewModel, esiste un modo per associare una delle caselle di controllo a FileTypes ["aspx"]? Cosa accadrebbe se avessi una struttura dati più complessa come Dictionary<string, Dictionary<string, int>>?

risposta

3

È quasi avuta - basta semplicemente inserire le virgolette attorno l'argomento indicizzatore:

{Binding FileTypes[aspx]} 

Una struttura dati più complessa sarebbe solo bisogno di una sequenza di indicizzatori, per esempio

{Binding Foo[aspx][Bar]} 

Tra l'altro, una buona risorsa per questa roba è in MSDN, in WPF> Dati> Data Binding> Binding Dichiarazioni Panoramica - scorrere fino a "Binding percorso di sintassi" per un riepilogo delle notazioni e convenzioni puoi usare in un percorso vincolante.

Problemi correlati