簡體   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