Программно сгенерированное изображение не имеет CanvasLeft - PullRequest
0 голосов
/ 30 июля 2010

Несмотря на то, что заголовок является незначительной ложью, он определяет проблему.

У меня есть изображение в окне 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);

1 Ответ

1 голос
/ 30 июля 2010

Для настройки свойств Canvas calss, прикрепленных влево, вправо, сверху, снизу, следует использовать статические методы Set ( side ) класса Canvas.

Canvas.SetLeft(newItem, 10d);

Подробнееat Canvas.SetLeft Метод MSDN Статья То же самое относится к свойствам Right, Top и Bottom.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...