2013-10-06 33 views
0

我有2个按钮:防止从的PreviewMouseLeftButtonDown影响家长,在特定的子

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

父被注册为PreviewMouseLeftButtonDown事件。 我希望父母的PreviewMouseLeftButtonDown事件不会发生,如果我们点击按钮cc有一些其他注册)。我无法专门检查它(使用GetPosition或在c上注册MouseEnter并更改某个标记...),因为parnet是通用的,并且可以包含许多按钮。

我试过注册PreviewMouseLeftButtonDownc,但e.Handled = true不帮我,因为父母的事件发生在孩子的事件之前。

有没有办法做到这一点?

感谢

回答

2

这是因为的PreviewMouseLeftButtonDown使用隧道策略,它击中孩子最后和父母第一,

听起来像是你需要的MouseLeftButtonDown在使用冒泡战略,这种情况下适用

 e.IsHandled = true 

从C在搬运时,

仅供参考,因为这个原因e.IsHandled影响独生子女埃尔你的按钮。

参见RoutedEvents