Sic.Framework-Nanjing-Baishi/MECF.Framework.Common/WpfStyleableWindow/StyleableWindow/WindowDragBehavior.cs

38 lines
1.1 KiB
C#

using System.Windows;
using System.Windows.Input;
namespace WpfStyleableWindow.StyleableWindow
{
public static class WindowDragBehavior
{
public static readonly DependencyProperty LeftMouseButtonDrag = DependencyProperty.RegisterAttached("LeftMouseButtonDrag", typeof(Window), typeof(WindowDragBehavior), new UIPropertyMetadata(null, OnLeftMouseButtonDragChanged));
public static Window GetLeftMouseButtonDrag(DependencyObject obj)
{
return (Window)obj.GetValue(LeftMouseButtonDrag);
}
public static void SetLeftMouseButtonDrag(DependencyObject obj, Window window)
{
obj.SetValue(LeftMouseButtonDrag, window);
}
private static void OnLeftMouseButtonDragChanged(object sender, DependencyPropertyChangedEventArgs e)
{
if (sender is UIElement uIElement)
{
uIElement.MouseLeftButtonDown += buttonDown;
}
}
private static void buttonDown(object sender, MouseButtonEventArgs e)
{
UIElement uIElement = sender as UIElement;
if (uIElement.GetValue(LeftMouseButtonDrag) is Window window)
{
window.DragMove();
}
}
}
}