双击列表视图

时间:2013-10-18 10:31:51

标签: c# listview windows-8

当我双击列表视图项时,我收到了DoubleTapped事件。

但我不知道如何获得执行点击的所选项目。 ListView.Selecteditem没有给我点击项目。

请帮忙。

3 个答案:

答案 0 :(得分: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 :(得分:2)

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

在获取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();
}

由于

答案 2 :(得分: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];
}