【问题标题】:WPF Binding up and down the Visual TreeWPF 绑定可视化树
【发布时间】:2018-06-21 09:09:45
【问题描述】:

从 WPF XAML 视图中的控件,我需要访问另一个控件的属性,只有在向上移动到公共父控件然后从那里向下移动时才能在可视树中访问该控件。

举个例子:

<PageUserControl>
  <Grid>
    <TextBlock Text="Some example text" />
  </Grid>
  <TextBlock Text="{Binding Source={RelativeSource Mode=FindAncestor, AncestorType=PageUserControl, Path=??? I want to access the TextBlock}" />
</PageUserControl>

我想从第二个文本块访问第一个文本块的文本属性(这只是一个例子)。

我需要的是一种组合相关资源的方法,第一个是在可视化树上找到 PageUserControl,第二个从可视化树向下找到网格,最后是第三个找到网格内的文本块。

我在这里遗漏了什么还是不可能?

我不能添加控件 ID 或类似的东西,它只能与控件类型一起使用。

我在考虑类似采用 XPath 语法的相对源之类的东西,但这似乎是为了另一个目的(绑定 XML 文档)。

也许是另一个想法?

谢谢!

【问题讨论】:

  • 出于技术原因,我无法为控件添加名称。
  • 如果第一个 TextBlock 绑定到某个 VM 或 ResourceDictionary,那么您可以改用该 VM 的属性或 ResourceDictionary 项。

标签: wpf xaml


【解决方案1】:

我找到了解决问题的方法。可以使用这种方法:

<PageUserControl>
  <Grid>
    <TextBlock Text="Some example text" />
  </Grid>
  <TextBlock Text="{Binding Path=Children[0].Children[0].Text,
    RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=PageUserControl}}" />
</PageUserControl>

虽然不是很灵活,但对我来说已经足够了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-20
    • 1970-01-01
    • 1970-01-01
    • 2015-07-10
    • 2011-07-14
    • 2021-12-18
    • 2011-05-26
    • 1970-01-01
    相关资源
    最近更新 更多