Files
test_demo/MX-PD-盘古 - new/PanGu.DieBonderApp/MainShell/Common/Behaviors/WindowDragMoveBehavior.cs

61 lines
1.7 KiB
C#
Raw Normal View History

using System;
using System.Windows;
using System.Windows.Input;
namespace MainShell.Common.Behaviors
{
public static class WindowDragMoveBehavior
{
public static readonly DependencyProperty IsEnabledProperty = DependencyProperty.RegisterAttached(
"IsEnabled",
typeof(bool),
typeof(WindowDragMoveBehavior),
new PropertyMetadata(false, OnIsEnabledChanged));
public static bool GetIsEnabled(DependencyObject obj)
{
return (bool)obj.GetValue(IsEnabledProperty);
}
public static void SetIsEnabled(DependencyObject obj, bool value)
{
obj.SetValue(IsEnabledProperty, value);
}
private static void OnIsEnabledChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var element = d as UIElement;
if (element == null)
{
return;
}
if ((bool)e.NewValue)
{
element.MouseLeftButtonDown += OnMouseLeftButtonDown;
return;
}
element.MouseLeftButtonDown -= OnMouseLeftButtonDown;
}
private static void OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
var element = sender as DependencyObject;
var window = element != null ? Window.GetWindow(element) : null;
if (window == null || e.ButtonState != MouseButtonState.Pressed)
{
return;
}
try
{
window.DragMove();
e.Handled = true;
}
catch (InvalidOperationException)
{
}
}
}
}