2013-10-18 49 views
1

当我双击列表视图项时,我得到DoubleTapped事件。在列表视图上双击

但我不知道如何获得执行水龙头的选定项目。 ListView.Selecteditem不会给我点击的项目。

请帮忙。

+0

ListView.text会给你双击文本 – Anand

+0

从我在哪里可以得到的句柄列表view.Could请你告诉我一个例子? – nerd

回答

1

正如Aaron Xue所说的here,您无法直接通过Tapped事件获取点击项目。然而,你可以得到Y坐标,计算项目索引我们点击则获得该项目:

private void ListView_Tapped(object sender, TappedRoutedEventArgs e) 
{ 
    int item = 0; 
    Double coY = e.GetPosition((UIElement)sender).Y; 

    ListView lv = sender as ListView; 
    if (sender is ListView) 
    { 
     lv.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity)); 
     Size lvSize = lv.DesiredSize; 
     item = (int)(coY/lvSize.Height * lv.Items.Count); 
     item = item > lv.Items.Count ? lv.Items.Count : item; 
    } 

    var TappedItem = lv.Items[item]; 
} 
+0

即使我已经尝试过。但是选定的项目中没有任何项目。 – nerd

+0

@ user1562041对不起。我误解了你的问题。试试我的编辑。 – letiagoalves

2

的DataGrid和ListView有好的方法的HitTest,通过它可以得到选择的项目。

private void ListView_Tapped(object sender, TappedRoutedEventArgs e) 
    { 
     var listView = sender as ListView; 
     if (!(sender is ListView)) 
     { 
      return; 
     } 

     var hitTest = listView.HitTest(e.X, e.Y); 

     ListViewItem tappedListViewItem = hitTest.Item; 
    } 
1

我找到了解决这个问题的方法。

在获取DoubleTap事件之前轻敲列表视图项目时,您将获得GetFocus事件。 在这种情况下,您将获得所选项目,并且您可以在Doubletap中使用此选定项目。

private async void OnDoubleClick(object sender, 
Windows.UI.Xaml.Input.DoubleTappedRoutedEventArgs e)  
{ 

} 
private void OnFocus(object sender, Windows.UI.Xaml.RoutedEventArgs e) 
{ 
ListviewItem lv = (ListViewItem)e.OriginalSource; 
string str = lv.SelectedItem.tostring(); 
} 

感谢