2013-06-03 2 views
6

Sto tentando di utilizzare una raccolta che è una proprietà di un'altra raccolta per collegarsi a una listbox. I seguenti pregevoli opereInsieme di rilegature WPF con indice

<ListBox ItemsSource="{Binding Path=Locations[0].Buildings}"> 

il problema è che ho bisogno di un indice dinamico e

<ListBox ItemsSource="{Binding Path=Locations[index].Buildings}"> 

dove l'indice è un numero intero nel mio ViewModel, non funziona. Qualcuno sa come posso associare l'indice nel mio xaml con la proprietà nel mio viewmodel?

risposta

6

dove indice è un numero intero nel mio modello di vista, non funziona. Qualcuno sa come posso associare l'indice nel mio xaml con la proprietà nel mio viewmodel?

Una possibilità semplice sarebbe quella di esporre solo una proprietà CurrentLocation all'interno del tuo ViewModel, che era effettivamente Location[index]. Potresti quindi collegarti direttamente.

+0

Sì. Ho pensato a questo, solo curioso se ci fosse un altro modo senza dover creare un'altra proprietà senza altro scopo che per il binding. Può benissimo essere la soluzione, grazie! – aw04

4

Un'associazione all'interno di un'associazione non è possibile, quindi in XAML non è possibile associare a "indice".

a. Metodo Chris Moser's, è possibile creare un DependencyProperty che si lega a "index" Specificare un listener di modifiche sul gestore RegisterAttached e svolgere il proprio lavoro lì.

b. Utilizzare un convertitore. È possibile fornire l'indice come ConverterParameter

c. Associare a una proprietà POCO. Una proprietà POCO avrebbe bisogno della sua INotifyPropertyChanged segnalata dal commutatore