WPF-Bindung an übergeordneten DataContext

Wir haben eine WPF-Anwendung mit einem Standard-MVVM-Muster, die Cinch (und daher MefedMVVM) für die Auflösung View -> ViewModel nutzt. Dies funktioniert gut und ich kann die relevanten Steuerelemente an Eigenschaften im ViewModel binden.

Innerhalb einer bestimmten Ansicht haben wir ein Infragistics XamGrid. Dieses Raster ist an eine ObservableCollection im ViewModel gebunden und zeigt die entsprechenden Zeilen an. Allerdings habe ich dann eine bestimmte Spalte in diesem Raster, die ich versuche, einen TextBox-Textwert an eine Eigenschaft im übergeordneten DataContext anstatt an die ObservableCollection zu binden. Diese Bindung schlägt fehl.

Wir haben hier verschiedene Optionen durchlaufen, darunter:

Verwenden Sie AncestorType, um den Baum aufzuspüren und wie folgt an den DataContext des übergeordneten UserControl zu binden (von dergute Antwort auf diese Frage sowiedieses) ...

{Binding Path=PathToProperty, RelativeSource={RelativeSource AncestorType={x:Type typeOfAncestor}}}

Geben Sie den Elementnamen an und versuchen Sie, das Steuerelement der obersten Ebene direkt als Ziel festzulegen. Haben eineSchau hier wenn Sie über die Verwendung von ElementName lesen möchten.

Verwenden eines 'Proxy'-FrameorkElement, das in den Ressourcen für das UserControl definiert ist, um zu versuchen, den Kontext nach Bedarf' einzugeben '. Wir definieren das Element wie folgt und verweisen dann auf eine statische Ressource ...

<FrameworkElement x:Key="ProxyContext" DataContext="{Binding Path=DataContext, RelativeSource={RelativeSource Self}}"></FrameworkElement>

In diesem Fall findet die Bindung das FrameworkElement, kann jedoch nicht auf etwas anderes zugreifen (wenn ein Pfad angegeben wird).

Nach dem Durchlesen ist es sehr wahrscheinlich, dass dies durch die Infragistics XamGrid-Gebäudespalten außerhalb des Baums verursacht wird. Selbst wenn dies der Fall ist, sollten jedoch mindestens die Optionen 2 oder 3 funktionieren.

Unsere letzten Gedanken sind, dass es mit der V - VM Bindung zusammenhängt, aber selbst mit Snoop müssen wir noch herausfinden, was genau das Problem ist. Ich bin auf keinen Fall ein Experte mit WPF-Bindung, daher wären alle Hinweise willkommen.

EDIT: Ich habe einige Vorlagenbeispiele aus Infragistics gefundenHier dass ich es versuchen werde.

EDIT 2: Wie von @Dtex hervorgehoben, sind Vorlagen der richtige Weg. Hier ist das relevante Snippet für die Verwendung mit einem XamGrid:

<ig:GroupColumn Key="CurrentDate">
                <ig:GroupColumn.HeaderTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding Path=DataContext.CurrentDateTest, RelativeSource={RelativeSource AncestorType=UserControl}}" />
                    </DataTemplate>
                </ig:GroupColumn.HeaderTemplate>
                <ig:GroupColumn.Columns>

Ich habe das XML offen gelassen ... Sie fügen einfach die gewünschten Spalten hinzu und schließen dann die relevanten Tags.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage