取消选择GridView.如果已选择项目,请单击



我知道这看起来很简单,我也是这么想的,但事实并非如此。我有一个GridView,SelectionMode="Single",我只想通过单击它来取消选择所选项目。问题是,当你选择一个已经选择的项目时,SelectionChanged不会触发。我已经尝试在每个SelectionChanged上设置一个等于GridView的SelectedIndex的int,然后检查Grid_Tapped,看看PreviousSelectedIndex是否为CurrentlySelectedIndex,但SelectionChanged事件在Grid_Tappeed之前激发纳秒,所以它不起作用。有什么想法吗?

我认为与其延迟,不如使用以下内容:

Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => gridView.SelectedItem = null);

是的,这是一个有点奇怪的默认行为,您可以使用以下技巧来解决(有很多方法)

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就会被取消选择。

使用CellClick事件。

例如,private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)e.RowIndex保存单击的单元格的索引。您所要做的就是检查这个索引是否等于SelectedIndex

最新更新