UWP GridView单击空白以清除所选

时间:2017-12-05 03:18:25

标签: c# uwp

提前致谢。

我认为这是一个简单的问题,但我不知道。

在MianPage中,我有一个girdview。

我宣布Itemclick方法。

IsItemClickEnabled="True" 
IsRightTapEnabled="True"
ItemClick="girdView_ItemClick"
RightTapped="girdView_RightTapped"
在ItemClick中,我试过这个:

private async void girdView_ItemClick(object sender, ItemClickEventArgs e)
    {
        var gridView = sender as GridView;
        if (e.ClickedItem == gridView.SelectedItem)
        {
            await Task.Delay(100);
            gridView.SelectedItem = null;
        }
    }

当我点击同一个项目时,可以取消。但我也想点击空白区域取消选中。

我试过了:

if (e.ClickedItem == gridView.SelectedItem || e.ClickedItem == null)
        {
            await Task.Delay(100);
            gridView.SelectedItem = null;
        }

但是,当我点击空白区域时, NOT 会调用girdView_ItemClick方法。所以没用。

谢谢,有人有想法吗?

1 个答案:

答案 0 :(得分:0)

  

我的意思是,当我在gridview中单击空白区域时,gridview selected = null

在这种情况下,您可以尝试订阅GridView的{​​{3}}事件句柄并将代码段放入其中。单击GridView时,将调用它。如果你想在调用ItemClick事件时不调用它,你可以简单地使用"标记"控制这个。例如:

<GridView
    x:Name="gridView" 
    IsItemClickEnabled="True" 
    ItemClick="girdView_ItemClick"
    Background="Azure" 
   Tapped="gridView_Tapped">
    <GridView.ItemTemplate> 
    ...
    </GridView.ItemTemplate>
</GridView>

代码背后:

private int flag=0;
private async void girdView_ItemClick(object sender, ItemClickEventArgs e)
{
   var gridView = sender as GridView;
   if (e.ClickedItem == gridView.SelectedItem)
   {

       gridView.SelectedItem = null; 
   }
   flag = 1; 
} 

private void gridView_Tapped(object sender, TappedRoutedEventArgs e)
{
   if (flag == 0)
   {
       var gridView = sender as GridView;
       gridView.SelectedItem = null;
       gridView.SelectedIndex = -1; 
   }
   else
   {
       flag = 0;
   }
}