当我双击列表视图项时,我得到了 DoubleTapped 事件。
但我不确定如何获取执行点击的选定项目。ListView.Selecteditem 没有给我点击的项目。
请帮忙。
我找到了解决这个问题的方法。
在获取 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();
}
谢谢
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;
}
正如 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];
}