以编程方式生成的图像没有Canvas Left

时间:2010-07-30 08:14:08

标签: c# wpf

虽然这个标题有点谎言但它定义了问题。

我在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 个答案:

答案 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属性。