2010-07-30 29 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