繁体   English   中英

我可以控制XAML中的点击事件触发顺序吗?

[英]Can I control the order click-events trigger in XAML?

我因此定义了一个XAML列表视图,并在“ PreviewMouseRightButtonUp”和“ PreviewMouseLeftButtonUp”事件上定义了事件:

<ListView Name="lstItems" DockPanel.Dock="Top" >
        <ListView.ItemContainerStyle>
                <Style TargetType="{x:Type ListViewItem}" BasedOn="{StaticResource ListViewItemStyle}">
                    <EventSetter Event="PreviewMouseRightButtonUp"
                         Handler="OnListViewItemPreviewMouseRightButtonUp" />
                    <EventSetter Event="PreviewMouseLeftButtonUp"
                         Handler="OnListViewItemPreviewMouseLeftButtonUp" />
                </Style>
        </ListView.ItemContainerStyle>
</ListView>

我还有一个类ObjRow,它继承自UserControl,上面有一个按钮:

<DockPanel LastChildFill="True"> 
    <Button Name="btnOpen" DockPanel.Dock="Left" BorderBrush="Transparent" Style="{StaticResource FolderButton}" IsTabStop="False"/>
</DockPanel>

最后,在列表视图的代码中,我调用一个方法,在该方法中,我在按钮的“ Click”事件上设置了一个事件:

foreach (var obj_items in objs)
{
                ObjRow item = new ObjRow();
                item.btnOpen.Click += new RoutedEventHandler(btnOpen_Click);

                controls.Add(item);
}
lstItems.ItemsSource = controls;

这两个事件均按预期触发。 以前,我没有“ PreviewMouseLeftButtonUp”事件,因此左键单击按钮只会触发“ Click”事件。 但是,添加该事件后,左键单击将同时触发这两个事件–首先是列表视图中的“ PreviewMouseLeftButtonUp”,然后是UserControl中的“ Click”。

我正在寻找一种方法,当单击按钮时忽略“预览”事件,而是仅触发“单击”事件。 有没有办法使这些不同的事件一起玩? 还是我需要找到其他地方放置“ PreviewMouseLeftButtonUp”代码?

一些简短有趣的主题相关阅读

在任何实际事件发生之前自然会调用Preview ,因此始终会在Click之前引发Preview

MouseLeftButtonUp替换PreviewMouseLeftButtonUp允许您的Button.Click首先执行。

此外, Button.Click会阻止click事件到达MouseLeftButtonUp,这符合您的要求,但是如果您确实需要它可以成为一个问题。 如有必要,请参见此问题以解决此问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM