using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Input; namespace Developpez.Dotnet.Windows.Util { /// /// Permet d'activer le déplacement automatique à la souris d'une fenêtre sans bordure /// public static class DragMove { /// /// Indique si le déplacement automatique à la souris est activé pour la fenêtre /// /// La fenêtre pour laquelle on souhaite obtenir la valeur de la propriété /// true si le déplacement automatique à la souris est activé, sinon false. [AttachedPropertyBrowsableForType(typeof(Window))] public static bool GetEnabled(Window window) { return (bool)window.GetValue(EnabledProperty); } /// /// Définit si le déplacement automatique à la souris est activé pour la fenêtre /// /// La fenêtre pour laquelle on souhaite définir la propriété /// true pour activer le déplacement automatique à la souris, false pour le désactiver public static void SetEnabled(Window window, bool value) { window.SetValue(EnabledProperty, value); } /// /// Identifiant de la propriété Enabled /// public static readonly DependencyProperty EnabledProperty = DependencyProperty.RegisterAttached( "Enabled", typeof(bool), typeof(DragMove), new UIPropertyMetadata(false, OnEnabledChanged)); static void OnEnabledChanged(DependencyObject o, DependencyPropertyChangedEventArgs e) { var w = o as Window; if (w == null) return; var ev = e.OfType(); if (ev.OldValue && !ev.NewValue) { w.MouseLeftButtonDown -= w_MouseLeftButtonDown; } if (!ev.OldValue && ev.NewValue) { w.MouseLeftButtonDown += w_MouseLeftButtonDown; } } static void w_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { var w = sender as Window; if (w == null) return; w.DragMove(); } } }