从列表视图获取ListViewItem而不是Item

问题描述 投票:0回答:1

对于从ListView到Canvas的拖放,我希望对象像拾取它们一样被拖放。例如:

我捡起一个项目,鼠标低了50像素,而距ListViewItem的左上角则为20像素。然后,当我放下该项目时,我希望该项目高出50像素,还剩20像素,因此相对于拾起时的位置,我得到的位置相同。当我单击一个项目并开始拖动时,这就是触发的事件:

void StackPanel_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        int index = GetCurrentIndex(e.GetPosition);

        var ListIteminstance = ModuleListView.Items[index] as ListViewItem;
        // Now you got the original object and then do what you want. 

        startPoint = e.GetPosition(ListIteminstance);
    }

ListIteminstance为空,因为它无法将该项转换为ListViewItem。原因是,我仅从项目中获得坐标“ 0,0”,将其放下时是从左上角开始的,而不是从拾取它的相对坐标开始

GetCurrentIndex()为我提供了我单击的项目的索引。但这不是ListViewItem,而是存储在列表中的“ MyClass”类型的对象。现在我想知道如何获取单击的ListViewItem,以便ListIteminstance不为空

c# wpf listview
1个回答
0
投票

尝试一下:

© www.soinside.com 2019 - 2024. All rights reserved.