首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >wpf:祖先的FindAncestor

wpf:祖先的FindAncestor
EN

Stack Overflow用户
提问于 2011-06-19 22:18:06
回答 2查看 6.3K关注 0票数 6

我有一个绑定到ViewModel的UserControl。在UserControl上绑定到一个项目列表(类对象)。因此,当我想要将各种元素绑定到DataGrid的RowDetails模板上的属性时,我使用:

代码语言:javascript
复制
"{Binding RelativeSource={RelativeSource FindAncestor, 
                          AncestorType={x:Type UserControl}}, 
               Path=DataContext.SomeProperty}"

这可以很好地工作。现在,我想将RowDetails内容分解成一个UserControl,我可以在其他带有DataGrids的顶级UserControls中使用它。那么,如何找到作为编写此绑定语句的UserControl的祖先的UserControl呢?

我不能在x: UserControl声明中指定顶级类型的名称,因为它每次都是不同的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-20 00:36:26

你可以用AncestorLevel来做这件事,但是我严重怀疑这是正确的绑定方式。

您将拥有一个根据其在逻辑树中的位置而工作的UserControl。

如果你在这两个中间插入一些其他的用户控件,它就会停止工作。

正确的绑定方式是使用提供给控件的Datacontext。

如果它丢失了一些数据,那么就调整datacontext以获得它,即使这意味着从其父数据上下文中读取数据。

票数 5
EN

Stack Overflow用户

发布于 2011-06-20 00:12:08

看一看AncestorLevel

代码语言:javascript
复制
"{Binding RelativeSource={RelativeSource FindAncestor,  
                                         AncestorType={x:Type UserControl},
                                         AncestorLevel=2},
          Path=DataContext.SomeProperty}"
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6402902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档