2017-10-10 89 views
0

我目前正在做一個ListView中的多個ListViewItems應用程序,對雙擊事件作出反應。但是,當雙擊ListView時,我需要知道哪些項目被雙擊。列表視圖雙擊項目

當雙擊UWP中的列表視圖時,它在發出雙擊事件之前不會選擇該項目。因此,我無法通過myListView.SelectedItem獲取項目。 UWP似乎不支持命中測試,除非我錯過了某些東西。

想法?

+0

檢查這個問題https://stackoverflow.com/questions/45812310/uwp-listboxitem-click-trigger/45814015#45814015你也可以創建一個字段來保存先前選擇的索引來比較雙擊 –

+0

選擇當一件物品被雙擊時,改變不會發生火災。這是我的問題的根源。 – Saghen

+0

嘗試在ListViewItem的DataTemplate而不是ListView上註冊DoubleTapped事件。 – kennyzx

回答

1

我解決我的問題,通過執行以下操作:

  1. 我設置IsHitTestVisible財產上在ListViewItem內網格是假的(僅適用,如果你在列表視圖中有控制)。

  2. 我訂閱了ListView的雙竊聽事件

  3. 當事件觸發,我用DoubleTappedRoutedEventArgs搶原始出處和鑄造,爲ListViewItem的(或在我的情況,我的用戶)。

下面的代碼:

定製的ListViewItem: XAML

<ListViewItem x:Name="ListBoxItemContainer" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch" Padding="0,0"> 
    <Grid x:Name="MainGrid" HorizontalAlignment="Stretch" IsHitTestVisible="False"> 
     <!-- Your controls here --> 
    </Grid> 
</ListViewItem> 

列表查看代碼:

private async void MainListView_DoubleTapped(object sender, DoubleTappedRoutedEventArgs e) 
    { 
     var test = (ListViewItem)MainListView.SelectedItem; 
     // Test is your reference to the list view item that was clicked 
    } 

注意:請確保您訂閱到您的列表視圖的雙抽頭事件。

0

試試這個:

private void OnSelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     if (ListView.SelectedIndex == -1) return; 

     _previousIndex = ListView.SelectedIndex; 

     if (_previousIndex == ListView.SelectedIndex) 
     { 
      //double-click occured 
      _previousIndex = -2; 
     } 

     ListView.SelectedIndex = -1; 
    } 
+0

當您發表原始評論時,onselectionchanged事件不會在雙擊項目時觸發。 – Saghen

+0

使用它你不需要訂閱任何雙擊 –