public void OnPreviewMouseMove(object sender, MouseEventArgs e) { if (_TopWindow == null) return; if (!_bMouseCaptured && e.LeftButton == MouseButtonState.Pressed) { _bDragging = true; if (_bDragCreate) // 블록 생성 { _MoveBlock = (sender as AbstractBlock).CreateUserInstance(); _MoveBlock.DataContext = (sender as AbstractBlock).CreateUserInstance(); } else // 블록 이동 { _MoveBlock = sender as AbstractBlock; if (_MoveBlock == null) { System.Diagnostics.Debug.WriteLine("drag control is null"); System.Diagnostics.Debug.Assert(_MoveBlock != null); return; } // 부모 컨트롤 지우고 _DragCanvas 영역에서 드래깅 하기 위해 부모 컨트롤을 옮겨주자 _MoveBlock.RemoveParent(); } //_MoveBlock.Width = (_DraggedData as Control).Width; //_MoveBlock.Height = (_DraggedData as Control).Height; //_DragControlBowl.canvas.Width = (_DraggedData as Control).Width; //_DragControlBowl.canvas.Height = (_DraggedData as Control).Height; _DragCanvas.Visibility = Visibility.Visible; _DragCanvas.Children.Add(_MoveBlock); // IntoDragCanvas(_MoveBlock); _bMouseCaptured = Mouse.Capture(_MoveBlock); Canvas.SetLeft(_MoveBlock, _DownPointInTopWindow.X - _DownPointGapOfBlock.X); Canvas.SetTop(_MoveBlock, _DownPointInTopWindow.Y - _DownPointGapOfBlock.Y); _DragCanvas.PreviewMouseMove += new MouseEventHandler(_BlockBoard_OnMouseMove); _DragCanvas.PreviewMouseUp += new MouseButtonEventHandler(_BlockBoard_OnMouseUp); } }