Несмотря на то, что заголовок является незначительной ложью, он определяет проблему.
У меня есть изображение в окне 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);