/// <summary> /// マウス左ボタンイベント離上イベント /// ゴースト削除 /// </summary> /// <param name="sender">対象Control</param> /// <param name="e">マウスボタンイベントデータ</param> private static void OnPreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e) { if (_Adorner != null) { _Adorner.AdornedElement.ReleaseMouseCapture(); _Adorner.Detach(); _Adorner = null; } }
/// <summary> /// マウス左ボタン押下イベント /// ゴーストを新規作成し表示 /// </summary> /// <param name="sender">対象Control</param> /// <param name="e">マウスボタンイベントデータ</param> private static void OnPreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e) { if (e.OriginalSource is FrameworkElement element) { var parent = FindAncestor <Panel>(element); if (parent != null && sender is FrameworkElement adornedElement) { var point = e.GetPosition(adornedElement); var offset = new Point((-1) * point.X, (-1) * point.Y); _Adorner = new GhostAdorner(parent, adornedElement, point, offset); adornedElement.CaptureMouse(); } } }