【发布时间】:2015-02-03 03:51:34
【问题描述】:
我有一个画布。在这个画布中(假设在右边)我有一个 StackPanel,包裹在一个 ScrollViewer 中,包含图像。我希望用户能够从 StackPanel 中抓取图像并将其拖动到 Canvas 中的任何位置。
我可以从 StackPanel 中删除选定的图像,并将其添加到 Canvas 中完全相同的位置,但这会结束操作事件,导致用户必须再次抓取图像才能继续移动它。我试图通过创建一个新的 ManipulationStarting 事件来解决这个问题,但我无法正确处理它。我的代码如下...
var element = e.Source as System.Windows.Controls.Image;
var sp = element.Parent as StackPanel;
if (sp != null)
{
GeneralTransform transform = element.TransformToAncestor(this);
System.Windows.Point TouchEndPoint = transform.Transform(new System.Windows.Point(0, 0));
Canvas.SetTop(element, TouchEndPoint.Y);
Canvas.SetLeft(element, TouchEndPoint.X);
Grid.SetZIndex(element, 20);
//element.Tag = "Image on Canvas";
element.Opacity = 1;
sp.Children.Remove(element);
_anvas.Children.Add(element);
var args = new RoutedEventArgs(System.Windows.Controls.Image.ManipulationStartingEvent, element);
element.RaiseEvent(args);
}
else
{
e.ManipulationContainer = _canvas;
}
【问题讨论】:
标签: c# wpf drag-and-drop touch draggable