2013-10-18 52 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(); 
} 

感謝