我知道这看起来很简单,这也是我的想法,但实际上并非如此。 我有一个GridView,SelectionMode =“Single”,我想通过点击它来取消选择一个选定的项目。问题是,当您选择已选择的项目时,SelectionChanged不会触发。我尝试在每个SelectionChanged上使用等于GridView的SelectedIndex的int,然后检查Grid_Tapped以查看PreviousSelectedIndex == CurrentlySelectedIndex,但SelectionChanged事件在Grid_Tapped之前触发纳秒,因此它不起作用。有什么想法吗?
答案 0 :(得分:3)
是的,这是一个有点奇怪的默认行为,你可以做以下技巧来解决(有很多方法)
1.- XAML
<GridView IsItemClickEnabled="True" ItemClick="IconGridView_ItemClick" SelectionMode="Single">
2.-事件代码:
private async void IconGridView_ItemClick(object sender, ItemClickEventArgs e)
{
var gridView = sender as GridView;
if (e.ClickedItem == gridView.SelectedItem)
{
await Task.Delay(100);
gridView.SelectedItem = null;
}
}
如果你不等一下,内部事件会保留所选项目,这样就可以解决它并取消选择SelectedItem。
答案 1 :(得分:3)
我认为使用它更好,而不是延迟:
Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => gridView.SelectedItem = null);
答案 2 :(得分:-1)
使用CellClick
事件。
在示例中,private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
,e.RowIndex
包含单击的单元格的索引。您所要做的就是检查此索引是否等于SelectedIndex
。