/*void SetIsEnabledDraggableDescendants(bool isEnabled) * { * if (TypeControlUnderMouseAvoidingMove != null) * { * var draggableElements = WPFUtil.FindChilds(TypeControlUnderMouseAvoidingMove, AssociatedObject); * foreach (var de in draggableElements) * DraggableFrameworkElementBehavior.SetIsEnabled(isEnabled, (FrameworkElement)de); * } * }*/ private void AssociatedObject_MouseUp(object sender, MouseButtonEventArgs e) { if (e.ChangedButton == MouseButton.Left && IsDragging) { #if alldbg || dbg DesktopPanelTool.Lib.Debug.WriteLine($"end drag move"); #endif IsDragging = false; Mouse.Capture(null); AssociatedObject.Cursor = CursorDefault; ResizableTransparentWindowBehavior.EnableResizableBehavior(AssociatedObject); DraggableFrameworkElementBehavior.SetIsEnabledDraggableDescendants( AssociatedObject, TypeControlUnderMouseAvoidingMove, true); } }
void SetUpIsMoving(Point setUpIsMovingFrom) { LastDragMoveTime = DateTime.Now; AssociatedObject.Cursor = CursorDragging; #if alldbg || dbg DesktopPanelTool.Lib.Debug.WriteLine($"start drag move: x={setUpIsMovingFrom.X},y={setUpIsMovingFrom.Y}"); #endif InitialPX = setUpIsMovingFrom.X; InitialPY = setUpIsMovingFrom.Y; Mouse.Capture(AssociatedObject); ResizableTransparentWindowBehavior.DisableResizableBehavior(AssociatedObject); DraggableFrameworkElementBehavior.SetIsEnabledDraggableDescendants( AssociatedObject, TypeControlUnderMouseAvoidingMove, false); IsDragging = true; }
// TODO: change by left mouse up or check left button private void AssociatedObject_MouseUp(object sender, MouseButtonEventArgs e) { if (!IsDockableEnabled) { return; } if (IsDockable) { AttachToDock(DockingDock, DockingScreen); } if (IsUndocking) { EndUndocking(); DraggableFrameworkElementBehavior.SetIsEnabledDraggableDescendants(AssociatedObject, typeof(WidgetControl), true); } }
private void AssociatedObject_MouseDown(object sender, MouseButtonEventArgs e) { #if alldbg || dbg DesktopPanelTool.Lib.Debug.WriteLine($"mouse down"); #endif if (IsDocked && e.ChangedButton == MouseButton.Left && !IsPined && AcceptableUndockingStartPoint()) { #if alldbg || dbg DesktopPanelTool.Lib.Debug.WriteLine($"start undocking"); #endif DraggableFrameworkElementBehavior.SetIsEnabledDraggableDescendants(AssociatedObject, typeof(WidgetControl), false); IsUndocking = true; POINT p = new POINT(); GetCursorPos(ref p); InitialUndockingPosition = new Point(p.X, p.Y); Mouse.Capture(AssociatedObject); } }