2013-09-25 12 views
5

Ho un controllo utente con una proprietà di dipendenza. Nella mia finestra ho una lista di oggetti e sto creando una griglia uniforme composta dal mio controllo utente. Sto impostando ItemsSource sul mio elenco di oggetti, ma ho bisogno di passare ogni rispettivo oggetto al controllo utente. Si prega di consultare il codice qui sotto - Devo passare l'oggetto Participant a LadderControl.Come ottenere l''articolo' corrente in un binding di ItemsSource

<ItemsControl Grid.Row="2" Name="Participants" ItemsSource="{Binding Path=MyEvent.Participants}"> 

    // more code here, irrelevant 

    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <ladder:LadderControl Participant="CURRENT_ITEM_IN_PARTICIPANTS_LIST"/> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 

C'è un modo per farlo? Dovrei pensare a usare un modello diverso?

Grazie

risposta

3

solo fare il basso, come il partecipante è il contesto di ogni elemento

<ladder:LadderControl Participant="{Binding}"/> 
+0

Penso che questa sia la soluzione migliore in quanto LadderControl è più portabile. Grazie. – Sherlock

1

Si può semplicemente accedere al DataContext proprietà in LadderControl per accedere al partecipante currrent.

Non è necessaria una proprietà di dipendenza separata.

class LadderControl 
    { 
     ... 
     public IParticipant Participant 
     { 
      get{ return DataContext as IParticipant; } 
     } 
     ... 
0

Una soluzione è quella di fare semplicemente:

 <ladder:LadderControl Participant="{Binding Path=.}"/> 

{Binding Path=.} dovrebbe legarsi al elemento corrente nella lista ItemsSource.

Problemi correlati