我有一个网格,我想添加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
...
}
我应该删除此检查,还是有更好的方法来执行此操作?
答案 0 :(得分:0)
这是一个预览事件,因此尚未到达该项目以使其被选中。这就是为什么 item.IsSelected 总是为您返回false。
此处提供了更多信息What are WPF Preview Events?
如果您想要在事件到达目标之前取消事件,则基本上会处理预览事件。处理'冒泡'类型的事件更常见。也许你应该试试MouseLeftButtonDown。这里有一点比较Difference between PreviewMouseLeftButtonDown and MouseLeftButtonDown WPF