Я создаю приложение для Windows Store для приложений/универсального приложения для Windows 8.1 и Windows 10, и я хотел бы иметь возможность перетаскивать элементы между ListViews и иметь возможность позиционировать элемент в конкретное место в ListView. Основная проблема, с которой я сталкиваюсь, заключается в том, что я не могу найти хороший способ определить индекс списка, в котором элемент был удален.Перетаскивание приложения в Windows Store между ListViews
Я нашел образец (XAML ListView reorder), но важным отличием является то, что элементы в моем списке имеют переменную высоту, поэтому простой расчет, который использует этот примерный проект для вывода индекса, не будет работать для меня.
Я могу получить положение x, y, где в ListView элемент был удален, но у меня возникли проблемы с использованием этой позиции, чтобы выяснить индекс. Я нашел упоминания людей, использующих ListView.GetItemAt (x, y) или ListView.HitTest (x, y), но, как выяснили другие, эти методы, похоже, не существуют в приложениях Windows Universal. Я также пытался использовать VisualTreeHelper.FindElementsInHostCoordinates(), но я либо не использую его правильно, либо я не понимаю его цели, потому что я не могу заставить его возвращать результаты.
Вот некоторые пример кода, который я пробовал:
private void ListView_OnDrop(object sender, DragEventArgs e)
{
var targetListView = (ListView)sender;
var positionRelativeToTarget = e.GetPosition(targetListView);
var rect = new Rect(positionRelativeToTarget, new Size(10, 15));
var elements = VisualTreeHelper.FindElementsInHostCoordinates(rect, targetListView);
// Trying to get the index in the list where the item was dropped
// 'elements' is always empty
}
Для справки, я использую C#, XAML и Visual Studio 2013.
спасибо!
Благодарим за отправку решения, но это не решит мою проблему. Основная проблема, с которой я столкнулся, заключалась в том, что при переходе между элементами списка, над которыми вы работали, он сказал, что «он не упал над элементом, не добавил его в конец коллекции» – joelfp
В любом случае, вы сохранили мой день. Благодаря! –