我想获得点击的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>
答案 0 :(得分:1)
MouseButtonEventArgs
中有两个属性可以用于此目的
<强> Source
强>
此属性包含引发事件的对象的引用。示例按钮等
<强> OriginalSource
强>
原始报告源,由纯命中测试确定,在父类调整任何可能的Source
之前,这可能是为了压缩合成元素树。例如,Button内的Rectangle,Border或任何模板元素。
您可以按Name
casting
至OriginalSource
或更合适的
FrameworkElement
如果OriginalSource
不是所需的元素,那么您可以检索OriginalSource
的逻辑父级,这更有可能是所需的元素,并且检索名称与上面保持相同。
检索逻辑父示例
LogicalTreeHelper.GetParent(e.OriginalSource as DependencyObject);