Obecnie pracuję w ramach kontroli użytkownika WPF (głównym elementem mojego pliku XAML jest "UserControl"), o którym wiem, że jest hostowana wewnątrz okna. Jak uzyskać dostęp do właściwości okna przy użyciu powiązania danych?Co dokładnie robi "RelativeSource FindAncestor" w WPF Data Binding?
Czy ktoś wie dlaczego po prostu
<Binding RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type Window}}" Path="..." />
nie działa? Komunikat o błędzie, który otrzymuję, to:
System.Windows.Data Ostrzeżenie: 4: Nie można znaleźć źródła dla wiązania z odniesieniem "RelativeSource FindAncestor, AncestorType =" System.Windows.Window ", AncestorLevel = '1' '.
Edytuj: Skończyło się na wariacji na temat podejścia ArsenMkrt, więc przyjąłem jego odpowiedź. Jednak nadal jestem zainteresowany odkryciem, dlaczego FindAncestor nie działa "po prostu".
Powiedziałeś, że zmieniłeś jego odpowiedź, czy możesz opublikować to, co faktycznie zrobiłeś? – Miles
Zauważ, że szukałem rozwiązania tego problemu w kontekście wzorca MVVM. Własność okna, które chciałem powiązać, była w rzeczywistości własnością Window ViewModel. – user200783
ArsenMkrt zasugerował utworzenie właściwości w UserControl i powiązanie z nią, następnie z kolei (w XAML) powiązanie tej właściwości z pożądaną właściwością Okna. W przypadku wzorca MVVM, UserControl nigdy nie pojawił się w XAML, więc druga część nie była możliwa. – user200783