【发布时间】:2010-07-30 08:14:07
【问题描述】:
虽然这个标题有点谎言,但它定义了问题。
我在 WPF 窗口上有一个图像,其根元素是 Canvas,该图像附加了各种事件处理程序,允许我在窗口周围拖动它。
这一切都很好,但是当我向画布的子项添加新图像并绑定相同的事件处理程序时,图像不会移动。
现在我已经追踪到这一点(所有处理程序都很好地绑定),似乎在我的 MouseDownEvent 中由于某种原因 Canvas.GetLeft(((Image)sender)) 属性始终为 NaN。
这是我用来创建/添加新图像的代码:
// Just a class inheriting from Image
DraggableMediaItem newItem = new DraggableMediaItem();
Uri uri = new Uri(ofd.FileName, UriKind.Absolute);
BitmapImage icon = new BitmapImage(uri);
newItem.Source = icon;
newItem.PreviewMouseDown += new MouseButtonEventHandler(DragMe_MouseDown);
newItem.PreviewMouseMove += new MouseEventHandler(DragMe_MouseMove);
newItem.PreviewMouseUp += new MouseButtonEventHandler(DragMe_MouseUp);
newItem.TextInput += new TextCompositionEventHandler(DragMe_TextInput);
newItem.LostMouseCapture += new MouseEventHandler(DragMe_LostMouseCapture);
RootCanvas.Children.Add(newItem);
【问题讨论】: