事件冒泡问题(ScrollViewer)

rea*_*ify 5 silverlight events scrollviewer

我对冒泡事件有疑问.我设法在边框,网格,堆栈面板中冒泡,而不是在ScrollViewer中

如果您查看下面的示例,您会注意到当您单击TextBlock时,事件会被标记为Grid.但是当我包含ScrollViewer时,事件在此停止并且不会发送到网格.

有没有人现在发生这种情况,如果它可以修复?我真的需要能够通过ScrollViewer冒泡事件,因为我一直在使用它.

<Grid MouseLeftButtonDown="Grid_MouseLeftButtonDown">
        <!--<ScrollViewer MouseLeftButtonDown="ScrollViewer_MouseLeftButtonDown">-->
            <StackPanel Orientation="Vertical" MouseLeftButtonDown="StackPanel_MouseLeftButtonDown">
                <TextBlock Text="Click me to bubble an event" MouseLeftButtonDown="TextBlock_MouseLeftButtonDown"/>
            </StackPanel>
        <!--</ScrollViewer>-->
</Grid>


public partial class MainPage : UserControl
{
    public MainPage()
    {
        InitializeComponent();
    }

    private void Grid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        MessageBox.Show("LayoutRoot clicked");
    }


    private void ScrollViewer_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        MessageBox.Show("ScrollViewer clicked");
        e.Handled = false;
    }

    private void StackPanel_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        MessageBox.Show("StackPanel clicked");
        e.Handled = false;
    }

    private void TextBlock_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        MessageBox.Show("Textblock clicked");
        e.Handled = false;
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 1

使用 AddHandler(yourDelegate, True); 添加事件处理程序的语法,这将忽略可视化树中其他控件设置的 Handled 标志。