【问题标题】:是否可以在 XAML 中实现 FindAncestor 的相反功能?
【发布时间】:2022-01-21 23:11:44
【问题描述】:

在处理 DataGrid 时,在代码隐藏中,我可以沿着可视化树向下走,到达单元格及其后代。

在 XAML 中,FindAncestor 让我们可以遍历可视化树来访问没有名称的目标元素。

由于没有 FindDescendant,我想弄清楚如何向下走,而不是在代码隐藏中或通过 MVVM。

【问题讨论】:

  • 如果它不在代码后面,它会是什么样子?
  • 采用什么结构应该走多远?当树中有多个孩子时会发生什么?假设您正在搜索数据网格的树。那有很多孩子。要寻找什么?

标签: c# wpf


【解决方案1】:

不,至少目前还没有这样的 FindDescendant 功能。您在尝试仅通过 XAML 实现它时可能面临的主要问题是,可能有零个或多个结果符合您的条件,这与在树中向上走时您只看到一个父元素(或根元素根本没有父元素)不同)。所以结果是一个集合,而不是单个元素。

问题的另一个方面是通过模板选择器改变子代表示的能力:这样,父节点应该知道树下的所有更改,一直到下(可能是数以万计的级别)。但是,从系统设计的角度来看,最好将这些知识隐藏起来并委托给子节点自己。

并非最不重要的一点是:如果您根据子行为更改父项,如果反过来指示子项通过 FindAncestor 跟踪父项行为,则可能会导致循环依赖/锁定。 XAML 死锁?谢谢,但不,谢谢!

所以,毕竟,这可能是一个非常有争议的能力。

【讨论】:

  • 这让我更清楚了。非常感谢!
猜你喜欢
  • 2020-03-24
  • 1970-01-01
  • 1970-01-01
  • 2014-10-14
  • 1970-01-01
  • 2016-10-27
  • 2015-08-04
  • 2013-07-28
  • 2012-12-27
相关资源
最近更新 更多