ListBox鼠标左键单击事件

时间:2013-12-11 15:08:43

标签: c# .net wpf

我的ListBox文件中有XAML

<ListBox ItemsSource="{Binding Path=MyList}" Name="HistoryListBox" BorderThickness="0"
         Grid.Row="1" Margin="-2,0,0,0" ScrollViewer.CanContentScroll="False" 
         SelectionChanged="History_ListBox_Selection_Changed">
    <ListBox.Resources>
        <!--Defines a context menu-->
        <ContextMenu x:Key="MyElementMenu">
            <MenuItem Header="Delete from History" Click="MenuItemDelete_Click"/>
        </ContextMenu>

        <!--Sets a context menu for each ListBoxItem in the current ListBox-->
        <Style TargetType="{x:Type ListBoxItem}">
            <Setter Property="ContextMenu" Value="{StaticResource MyElementMenu}"/>
        </Style>
    </ListBox.Resources>
</ListBox>

正如您所看到的,它可以选择当用户点击它的呼叫时

History_ListBox_Selection_Changed

当用户选择右键单击ListBox项时,ContextMenu显示。

现在我遇到一个问题,当用户点击右键按下History_ListBox_Selection_Changed触发器,然后ContextMenu出现时。

如何只在左键单击鼠标时才能使History_ListBox_Selection_Changed工作?

2 个答案:

答案 0 :(得分:1)

更改您的代码

<Style TargetType="{x:Type ListBoxItem}">
    <Setter Property="ContextMenu" Value="{StaticResource MyElementMenu}"/>
</Style>

<Style TargetType="{x:Type ListBoxItem}">
    <Setter Property="ContextMenu" Value="{StaticResource MyElementMenu}"/>
    <EventSetter Event="MouseLeftButtonUp" Handler="History_ListBox_Selection_Changed">
    </EventSetter>
</Style>

然后移除SelectionChanged="History_ListBox_Selection_Changed"

答案 1 :(得分:0)

将“SelectionChanged”事件更改为“MouseLeftButtonUp”或“MouseLeftButtonDown”。