Кто-либо знает, как получить ListViewItem путем захвата первого видимого объекта в ListView? Я знаю, как получить объект в индексе 0, но не первый видимый.
Это было так больно заставить работать:
HitTestResult hitTest = VisualTreeHelper.HitTest(SoundListView, new Point(5, 5));
System.Windows.Controls.ListViewItem item = GetListViewItemFromEvent(null, hitTest.VisualHit) as System.Windows.Controls.ListViewItem;
И функция для получения элемента списка:
System.Windows.Controls.ListViewItem GetListViewItemFromEvent(object sender, object originalSource)
{
DependencyObject depObj = originalSource as DependencyObject;
if (depObj != null)
{
// go up the visual hierarchy until we find the list view item the click came from
// the click might have been on the grid or column headers so we need to cater for this
DependencyObject current = depObj;
while (current != null && current != SoundListView)
{
System.Windows.Controls.ListViewItem ListViewItem = current as System.Windows.Controls.ListViewItem;
if (ListViewItem != null)
{
return ListViewItem;
}
current = VisualTreeHelper.GetParent(current);
}
}
return null;
}
Не могу поверить, что нет более простого способа ...
http://social.msdn.microsoft.com/forums/en-US/wpf/ thread / 2d527831-43aa-4fd5-8b7b-08cb5c4ed1db