簡體   English   中英

UWP GridView單擊空白以清除所選內容

[英]UWP GridView click blank to clear selected

提前致謝。

我認為這是一個簡單的問題,但我不知道。

在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;
        }

但是,當我單擊空白區域時,它不會調用girdView_ItemClick方法。 因此它是沒有用的。

謝謝,有人有想法嗎?

我的意思是,當我單擊gridview中的空白區域時,所選的gridview = null

在這種情況下,您可以嘗試訂閱GridViewTapped事件句柄,然后將代碼片段放入其中。 當單擊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;
   }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM