在GridView中单击事件

时间:2016-03-26 02:58:06

标签: c# wpf listview gridview mouseclick-event

我有一个网格,我想添加onclick事件。

<ListView 
    HorizontalAlignment="Stretch"
    Margin="10"
    x:Name="BooksListView"
    GridViewColumnHeader.Click="SortBooks"
    >
    <ListView.View>
        <GridView></GridView>
    </ListView.View>
</ListView>

我已经尝试了SO question中接受的答案,但item.IsSelected总是错误的。

<ListView.ItemContainerStyle>
        <Style TargetType="ListViewItem">
            <EventSetter Event="PreviewMouseLeftButtonDown" Handler="ListViewItem_PreviewMouseLeftButtonDown" />
        </Style>
    </ListView.ItemContainerStyle>

C#代码:

private void ListViewItem_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    var item = sender as ListViewItem;
    if (item != null && item.IsSelected) // IsSelected is always false
    ...
}

我应该删除此检查,还是有更好的方法来执行此操作?

1 个答案:

答案 0 :(得分:0)

这是一个预览事件,因此尚未到达该项目以使其被选中。这就是为什么 item.IsSelected 总是为您返回false。

此处提供了更多信息What are WPF Preview Events?

如果您想要在事件到达目标之前取消事件,则基本上会处理预览事件。处理'冒泡'类型的事件更常见。也许你应该试试MouseLeftButtonDown。这里有一点比较Difference between PreviewMouseLeftButtonDown and MouseLeftButtonDown WPF