当父类型可以不同时,如何在 wpf 中访问父的 DataContext?

Posted

技术标签:

【中文标题】当父类型可以不同时,如何在 wpf 中访问父的 DataContext?【英文标题】:How to access DataContext of parent in wpf when parent type can be different? 【发布时间】:2012-11-14 23:40:48 【问题描述】:

我需要在 wpf xaml 中访问父级的 DataContext。整个 xaml 页面代码是动态的。所以不知道父母的类型。

我正在写这个

<Grid DataContext=Binding Path=.>

这是正确的吗?

【问题讨论】:

试一试 - 如果它的工作正确 可能重复:WPF Databinding: How do I access the “parent” data context? 【参考方案1】:

请记住,如果DataContext 没有显式设置,它将继承其父级的DataContext。如果由于某种原因这不起作用,您应该查看与RelativeSource 的绑定。

这样的事情可能会奏效:

<Grid DataContext="Binding RelativeSource=RelativeSource Mode=FindAncestor, AncestorType=x:Type Window, Path=DataContext"

鉴于Grid 有一个Window 类型的祖先(我认为所有控件都应该有)。

【讨论】:

谢谢。默认情况下它有效。只是想知道如果 AncestorType 不是父级的 Window 并且我按照您提到的那样设置了 Binding ,那么会发生什么? 如果您指定WindowAncestorType 并且该元素没有Window 类型的祖先(我猜这永远不会发生),绑定将根本不起作用。这与绑定到不存在的 Path 时的行为相同。再次阅读RelativeSource MarkupExtension documentation,它将告诉您有关AncestorTypeAncestorLevel 的所有信息...

以上是关于当父类型可以不同时,如何在 wpf 中访问父的 DataContext?的主要内容,如果未能解决你的问题,请参考以下文章

WPF宽度100%,我想wpf的子控件的宽度跟父控件的宽度一样,当父控件宽度改变的时候子控件随着改变,请问有啥!

checkbox的联动问题

子网站不继承父的WEBCONFIG

当父组件在其子组件中注入道具时,如何在 Typescript 中定义道具?

当父组件使用 ng-content Angular 时从子组件访问父组件

WPF 中的image控件的Source如何赋值?