如何找到点击的UIElement孩子

时间:2014-07-12 23:07:40

标签: wpf uielement

我想获得点击的UIElement的子元素即按钮。也许这有简单而简短的解决方案?我已经搜索了这个答案一段时间,但无法找到易于理解和使用的解决方案。我将感谢与此问题有关的任何帮助。

我现在的代码:

private new void MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{

    if (sender == (sender as UIElement))
    {

        //TODO: getting controls name that is placed inside clicked UIElement

    }

}

编辑:

想要提到UIElement是使用ResourceDictionary模板的ContentControl。 我的xaml代码看起来像这样

 <ContentControl Style="{StaticResource DesignerItemStyle}">
        <Button x:Name="btnAdd" Content="add function" IsHitTestVisible="True" 
        HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
</ContentControl>

1 个答案:

答案 0 :(得分:1)

MouseButtonEventArgs中有两个属性可以用于此目的

<强> Source

此属性包含引发事件的对象的引用。示例按钮等

<强> OriginalSource

原始报告源,由纯命中测试确定,在父类调整任何可能的Source之前,这可能是为了压缩合成元素树。例如,Button内的Rectangle,Border或任何模板元素。

您可以按Name castingOriginalSource或更合适的

检索元素的FrameworkElement

如果OriginalSource不是所需的元素,那么您可以检索OriginalSource的逻辑父级,这更有可能是所需的元素,并且检索名称与上面保持相同。

检索逻辑父示例

LogicalTreeHelper.GetParent(e.OriginalSource as DependencyObject);