更新:
你真的需要它嗎?看看你的XAML,你並沒有在你的ToggleButton中設置DataContext,所以你應該從設置它的值的父母繼承它的值。
參見:DataContext。
此依賴項屬性繼承屬性值。如果通過本地值或樣式創建的DataContext沒有其他值的子元素,那麼屬性系統會將該值設置爲指定此值的最近父元素的DataContext值。
無論如何,如果你需要它...
ORIGINAL: ,它假定在XAML中給定的結構是錯誤的任何答案。您始終可以應用更改結構的模板。
話雖如此,您可以使用VisualTreeHelper類(GetParent方法)來導航可視化樹。第一個參數是對被檢查的控件的引用。
所以,從我的頭頂,我想你可以做到以下幾點:
DependencyObject source = sender as DependencyObject;
if(null != source) {
DependencyObject parent = VisualTreeHelper.GetParent(source);
FrameworkElement parentElement = parent as FrameworkElement;
if(null != parentElement) {
object context = parentElement.DataContext;
}
}
你應該在一個輔助方法不會考慮此因素:
public static FrameworkElement GetParentContext(FrameworkElement element) {
object result = null;
DependencyObject parent = VisualTreeHelper.GetParent(element);
FrameworkElement parentElement = parent as FrameworkElement;
if(null != parentElement) {
result = parentElement.DataContext;
}
return result;
}
請考慮鑑於XAML結構可能與不同,也許您需要走到樹上,直到找到DataContext
不是null
的元素。
如果可能的話,共享xaml結構。 – Versatile
如果它解決了您的問題,請不要忘記標記爲答案。 – Versatile