Gong WPF拖拽ListBox项无法按拾取位置放置的问题求助
问题描述
我希望将ListBox元素从拾取的精确位置放下,但该功能无法正常实现。
相关代码
PropertyViewModel.cs
private void OnPreviewMouseLeftButtonDown(MouseButtonEventArgs? e) { Debug.WriteLine("HEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEIIIIIIIIIIIIIIIIIIIIIIIIII"); if (e.Source is FrameworkElement element && element.DataContext is PropertyViewModel propertyViewModel) { Point mousePosition = e.GetPosition(element); propertyViewModel.MouseOffset = new Point( mousePosition.X, mousePosition.Y ); //Debug.WriteLine("MouseOffset: " + propertyViewModel.MouseOffset); } }
TemplateGeneratorViewModel.cs
public void Drop(IDropInfo dropInfo) { if (dropInfo.Data is PropertyViewModel originalProperty && dropInfo.VisualTarget is ListBox listBox) { Point dropPosition = dropInfo.DropPosition; Debug.WriteLine("DROP: " + dropPosition); if (listBox.Name == CanvasListBoxName) { if (!originalProperty.IsOnCanvas) { CloneItemToCanvas(originalProperty, dropPosition); //DragDrop.DefaultDropHandler.Drop(dropInfo); } else { var newPosition = new Point( dropPosition.X - originalProperty.MouseOffset.X, dropPosition.Y - originalProperty.MouseOffset.Y); originalProperty.X = (int)(newPosition.X); originalProperty.Y = (int)(newPosition.Y); } } else if (listBox.Name == PropertyListBoxName && originalProperty.IsOnCanvas) { // Move the item back to the property list if needed originalProperty.IsOnCanvas = false; CanvasItems.Remove(originalProperty); } } }
预期行为
通过Gong的Drop() WPF方法,将元素从相对于鼠标的拾取位置精确放下。
我已卡壳多日,不知如何解决,感谢您的时间。
内容的提问来源于stack exchange,提问作者Alexandru Filipescu
相关产品推荐
相关产品推荐

