首页 文章

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

提问于
浏览
0

虽然这个 Headers 是一个轻微的谎言,但它定义了问题 .

我在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

    要设置Canvas calss的Left,Right,Top,Bottom附加属性,您应该使用Canvas类的Set(side)静态方法 .

    Canvas.SetLeft(newItem, 10d);
    

    More Info at Canvas.SetLeft Method MSDN Article同样是Right,Top和Bottom属性 .

相关问题