更新:
你真的需要它吗?看看你的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