2009-03-10 13 views
8

Ho una griglia di elementi che viene popolata usando l'associazione dati. Nella griglia ho un DataTemplate per alcune celle. Devo accedere allo DataContext dell'elemento root (quello che ospita la griglia) in modo che possa accedere a ulteriori associazioni per supportare il datatemplate.Come posso accedere al root DataContext in un DataTemplate in WPF?

in modo da avere:

Window 
    Window.DataContext = TheDataSourceWithItemsAndSupports 
    DataGrid.ItemsSource = {Binding Items} 
     DataTemplate 
      ListBox.ItemsSource = {Binding Supports} 

Voglio che il {Binding Supports} su TheDataSourceWithItemsAndSupports, ma non vedo come fare. Ho provato a specificare {Binding} ma restituisce sempre null. Ho anche provato a utilizzare RelativeSource FindAncestor, ma questo produce anche null.

Eventuali indizi?

risposta

14

magari provare

Window Name="TheWindow" 
... 
ListBox.ItemsSource = {Binding DataContext.Supports, ElementName=TheWindow} 
+0

Penso che il percorso di binding sarebbe DataContext.Supports, ma questa era anche la mia idea. –

+0

Hai ragione, modificato. – user76035

+0

Questo ha funzionato, ma ho dovuto fare un po 'più di programmazione (lo scenario sopra riportato non era una rappresentazione esatta della situazione attuale). – Inferis

0

Si dovrebbe funzionare il modo in cui si descrive. L'unica cosa che vedo il tuo DataTemplate non è ItemTemplate. Si dovrebbe anche guardare la finestra di output per vedere dove falliscono i bind.

0

La mia soluzione era quella di esporre tutta la classe DataContext mediante l'attuazione di questo campo

get 
{ 
    return this; 
} 

e quindi il legame con esso.

Problemi correlati