0

我有 2 个按钮:

<Button Name="parent">
    <StackPanel>
        <Button Name="a" />
        <Button Name="b" />
        <Button Name="c" />
        <Button Name="d" />
        <Button Name="e" />
    </StackPanel>
</Button>

父母已注册到PreviewMouseLeftButtonDown事件。我希望如果我们单击按钮(还有其他一些注册)PreviewMouseLeftButtonDown,则不会发生父事件。我无法具体检查它(使用 GetPosition 或注册到 MouseEnter并更改一些标志......),因为它是通用的,并且可以包含许多按钮。cccparnet

我尝试在 中注册PreviewMouseLeftButtonDownce.Handled = true对我没有帮助,因为父母的事件发生在孩子的事件之前。

有什么办法吗?

谢谢

4

1 回答 1

2

那是因为 PreviewMouseLeftButtonDown 使用了隧道策略,它最后击中子元素,先击中父元素,

听起来你需要 MouseLeftButtonDown 在这种情况下它使用冒泡策略并应用

     e.IsHandled = true

从 c 处理它时,

仅供参考,因此 e.IsHandled 仅影响您的子元素 Button 。

RoutedEvents

于 2013-10-06T08:24:45.477 回答