当我双击列表视图项时,我收到了DoubleTapped事件。
但我不知道如何获得执行点击的所选项目。 ListView.Selecteditem没有给我点击项目。
请帮忙。
答案 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];
}