我有一个WPF应用程序,其中包含一个列表框和一些项目。在这之间我还添加了虚拟物品,以便我可以在这些物品之间拖放。
我实现了拖放操作,它与鼠标完美配合。触摸它有效,但不是我想要的方式。如果未选择列表框项目,使用触摸拖放工作但没有任何拖放效果,我想我将不得不为此创建Adorner
。但是当选择列表框项时,拖放操作不起作用。我必须手动取消选择该项目然后它的工作原理。即使是UnSelectAll()
方法也没有用。
我只是想知道应该如何为触控设备实现拖放?
代码段如下:
private void s_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
if (sender is ListBoxItem)
{
ListBoxItem draggedItem = sender as ListBoxItem;
System.Windows.DragDrop.DoDragDrop(draggedItem, draggedItem.DataContext, DragDropEffects.Move);
draggedItem.IsSelected = true;
}
}
private void s_PreviewTouchDown(object sender, TouchEventArgs e)
{
if (sender is ListBoxItem)
{
ListBoxItem draggedItem = sender as ListBoxItem;
System.Windows.DragDrop.DoDragDrop(draggedItem, draggedItem.DataContext, DragDropEffects.Move);
draggedItem.IsSelected = true;
e.Handled = true;
}
}
private void listbox1_Drop(object sender, DragEventArgs e)
{
ItemTemplate droppedData = e.Data.GetData(typeof(ItemTemplate)) as ItemTemplate;
ItemTemplate target = ((ListBoxItem)(sender)).DataContext as ItemTemplate;
int removedIdx = listBox1.Items.IndexOf(droppedData);
int targetIdx = listBox1.Items.IndexOf(target);
Swap<ItemTemplate>(AppsList, targetIdx, removedIdx);
}
任何帮助将不胜感激。 WPF中的Listbox
是否存在触摸问题?