2009-03-10 5 views
8

Ich habe ein Raster von Elementen, die mit Datenbindung gefüllt ist. Im Raster habe ich eine DataTemplate für bestimmte Zellen. Ich muss auf das DataContext des Wurzelelements zugreifen (dasjenige, das das Raster hostet), damit ich auf zusätzliche Bindungen zugreifen kann, um meine Datatemplate zu stützen.Wie kann ich auf den Stammdatenkontext in einem DataTemplate in WPF zugreifen?

So haben Sie:

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

ich die {Binding Supports} auf TheDataSourceWithItemsAndSupports will, aber ich sehe nicht, wie das zu tun. Ich habe versucht, {Binding} zu spezifizieren, aber das gibt immer null zurück. Ich habe auch versucht mit RelativeSource FindAncestor, aber das ergibt null auch.

Irgendwelche Hinweise?

Antwort

14

Vielleicht

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

Ich denke, der Bindungspfad wäre DataContext.Supports, aber das war meine Idee auch. –

+0

Sie haben Recht, geändert. – user76035

+0

Das funktionierte, aber ich musste noch mehr programmieren (das obige Szenario war keine exakte Darstellung der vorliegenden Situation). – Inferis

0

versuchen Sie sollte die Art und Weise Sie beschreiben arbeiten. Ich sehe nur, dass Ihre DataTemplate nicht ItemTemplate ist. Sie sollten auch das Ausgabefenster betrachten, um zu sehen, wo Bindungen fehlschlagen.

0

Meine Lösung war, um ganze Datacontext-Klasse aussetzen, indem Sie dieses Feld Implementierung

get 
{ 
    return this; 
} 

und dann an sie zu binden.