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();
}
}
}