2010-07-30 56 views
0

虽然该标题是一个轻微的谎言,它定义了问题。以编程方式生成的图像没有CanvasLeft

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

对于设置左,右,上,Canvas的底部附加属性CALSS你应当使用()静态Canvas类的方法。

Canvas.SetLeft(newItem, 10d); 

More Info at Canvas.SetLeft Method MSDN Article同样是右,上和下属性。

+0

谢谢我知道这一点我有所有的拖/放东西工作正常,通过XAML在画布上绘制的图像,但编程添加的onmousedown没有它的价值 – 2010-07-30 08:21:25

+0

啊我通过你的建议工作。我说好的意识到我需要将其设置第一 – 2010-07-30 08:22:50

+0

供参考:我刚添加这两个附加行于上述片段 Canvas.SetLeft(的newitem,0); Canvas.SetTop(newItem,0); – 2010-07-30 08:24:00