我对冒泡事件有疑问.我设法在边框,网格,堆栈面板中冒泡,而不是在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; } }
解决方法
使用AddHandler(yourDelegate,True);添加事件处理程序的语法,它将忽略可视树中其他控件设置的Handled标志.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。