Powiązanie WPF z rodzicem DataContext

Mamy aplikację WPF ze standardowym wzorem MVVM, wykorzystującą Cinch (a zatem MefedMVVM) do wyświetlania -> Rozdzielczość ViewModel. Działa to dobrze i mogę powiązać odpowiednie elementy sterujące z właściwościami w ViewModel.

W ramach konkretnego widoku mamy XamGrid Infragistics. Ta siatka jest powiązana z ObservableCollection w ViewModel i wyświetla odpowiednie wiersze. Jednak następnie mam konkretną kolumnę na tej siatce, które próbuję powiązać wartość tekstową TextBox do właściwości nadrzędnego DataContext, a nie ObservableCollection. To wiązanie zawodzi.

Przeszliśmy tutaj przez kilka opcji, w tym:

Używając AncestorType do śledzenia drzewa i powiązania z DataContext nadrzędnego UserControl w ten sposób (zświetna odpowiedź do tego pytania, jak równieżten) ...

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

Określenie elementu ElementName i próba bezpośredniego skierowania kontroli najwyższego poziomu. MiećPopatrz tutaj jeśli chcesz przeczytać o używaniu ElementName.

Użycie 'proxy' FrameorkElement zdefiniowanego w zasobach dla UserControl, aby spróbować i przekazać kontekst zgodnie z wymaganiami. Definiujemy element jak poniżej, a następnie odwołujemy się do zasobów statycznych ...

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

W tym przypadku powiązanie znajduje element FrameworkElement, ale nie może uzyskać dostępu do niczego poza tym (podczas określania ścieżki).

Po przeczytaniu wygląda na to, że jest to spowodowane przez kolumny budynku Infragistics XamGrid na zewnątrz drzewa. Jednak nawet jeśli tak jest, powinny działać przynajmniej opcje 2 lub 3.

Nasze ostatnie przemyślenia są związane z powiązaniem V-VM, ale nawet przy użyciu Snoopa nie znaleźliśmy jeszcze dokładnego problemu. Nie jestem ekspertem z powiązaniem WPF, więc wszelkie wskaźniki będą mile widziane.

EDIT: Znalazłem kilka przykładów szablonów z Infragisticstutaj że spróbuję.

EDYCJA 2: Jak wskazuje @Dtex, szablony są dobrym rozwiązaniem. Oto odpowiedni fragment do użycia z 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>

Pozostawiłem XML otwarty ... wystarczy dodać kolumny, które chcesz, a następnie zamknąć odpowiednie tagi.

questionAnswers(2)

yourAnswerToTheQuestion