我有两个控件a和B。对照b放置在A上。当单击B时,只有单击事件被触发,但是我也需要a的点击事件来启动。可以使用路由事件以某种方式实现这一点吗?

这是控件的屏幕截图:

Alt Text http://www.imagebanana.com/img/hu5znv4/buttons.png

当然,这种情况只是一个简化的例子,我正在寻找一种在鼠标光标下方 /一个位置下方所有控件上提出事件的一般方法。 Hoewever,解决这个问题的具体解决方案也会对我有所帮助!非常感谢您的提示!

有帮助吗?

解决方案

如果内部控件的事件处理程序将E.Handled属性设置为true,则可能会发生这种情况。这将防止路由事件进一步冒泡。但是我只是检查了,我在WPF 4中看不到这种行为。

如果E.Handled正在阻止您的事件,但是您可以做的就是使用 uielement.addhandler 超负荷需要一个布尔值处理的参数来连接您的点击事件。这必须在代码中完成,而不是标记。然后,您应该在外部控件中收到点击事件,并且E.Handled属性已经设置为True。

当我单击“内部”按钮时,以下代码确实设置了两个按钮的背景。

<Grid>
    <Button VerticalAlignment="Center" HorizontalAlignment="Center" Click="Click1">
        <Button Width="100" Height="25" Margin="20" Click="Click2" />
    </Button>
</Grid>

背后的代码

private void Click1( object sender, RoutedEventArgs e )
{
    ( (Button)sender ).Background = new SolidColorBrush( Colors.Blue );
}

private void Click2( object sender, RoutedEventArgs e )
{
    ( (Button)sender ).Background = new SolidColorBrush( Colors.Red );
    //e.Handled = true; // uncomment to stop bubbling
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top