2017-10-10 88 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

使用它你不需要订阅任何双击 –