在元素(父/子)WPF中获取元素

Posted

技术标签:

【中文标题】在元素(父/子)WPF中获取元素【英文标题】:Get Element inside Element (parent/child) WPF 【发布时间】:2012-05-04 11:19:20 【问题描述】:

我有一个关于访问另一个元素中的元素的问题。

情况

<grid name=container>
    <grid name=menu >
       inside here is the menu
    </grid
 <button />
<grid>

如果按下按钮,第二个网格(带有菜单)需要隐藏。按下按钮时如何访问网格元素。这需要不使用网格的实际名称,因为它位于数据模板中,并且多个对象使用同一个模板,但只有实际活动的对象需要隐藏。

【问题讨论】:

先放完整代码。即一个带有 DataTemplate 【参考方案1】:

RoutedEventArgs 类具有 Source、OriginalSource 属性,可用于确定所需信息。此外,事件处理程序中也提供了 sender 参数。

以下链接解释了 Source、OriginalSource 和 Sender 中的区别(并回答了问题)。 RoutedEventArgs.Source vs Sender

RoutedEventArgs.OriginalSource - 最初引发事件的原始对象

RoutedEventArgs.Source - 引发事件的对象。这通常与 OriginalSource 相同,但在处理复合控件时,它可以是包含 OriginalSource 对象的父级。*

Sender - 处理事件的当前元素

【讨论】:

我实际上不明白。现在我正在使用此代码Button button = (Button)e.Source as Button; ScatterViewItem item = (ScatterViewItem)ScatterView.ContainerFromElement(button); 变量 Item 为我提供了按钮所在位置的 ScatterViewItem。但我不需要 ScatterView 项,而是该 ScatterView 项中名为“菜单”的网格。 查看您的源代码,您不需要父级,而是兄弟级。为此,您必须获取父对象,然后必须找到您正在查看的子对象。类似于 item.FindName("menu") 的东西。 msdn.microsoft.com/en-us/library/…请提供完整的相关源代码,以防以上不能解决您的要求

以上是关于在元素(父/子)WPF中获取元素的主要内容,如果未能解决你的问题,请参考以下文章

wpf 怎么获取StackPanel 中控件的位置。

vue学习--父元素如何获取子元素的值,子元素如何获取父元素的值

jquery怎么在父元素事件中禁止子元素的事件?

iframe 子窗口获取父窗口元素 父窗口获取子窗口元素

已知子元素时如何在jQuery中获取父元素?

JavaScript,已获取到父元素并且已知该父元素的某子元素的name属性,怎么获取到相应的子元素?