Beispiel #1
0
        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);
            }
        }