当父类型可以不同时,如何在 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 ,那么会发生什么? 如果您指定Window
的AncestorType
并且该元素没有Window
类型的祖先(我猜这永远不会发生),绑定将根本不起作用。这与绑定到不存在的 Path
时的行为相同。再次阅读RelativeSource MarkupExtension documentation,它将告诉您有关AncestorType
和AncestorLevel
的所有信息...以上是关于当父类型可以不同时,如何在 wpf 中访问父的 DataContext?的主要内容,如果未能解决你的问题,请参考以下文章
WPF宽度100%,我想wpf的子控件的宽度跟父控件的宽度一样,当父控件宽度改变的时候子控件随着改变,请问有啥!
当父组件在其子组件中注入道具时,如何在 Typescript 中定义道具?