虽然这个标题有点谎言但它定义了问题。
我在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);
答案 0 :(得分:1)
要设置Canvas calss的Left,Right,Top,Bottom附加属性,您应该使用Canvas类的Set( side )静态方法。
Canvas.SetLeft(newItem, 10d);
More Info at Canvas.SetLeft Method MSDN Article同样适用于Right,Top和Bottom属性。