/// <summary>Fires when the IsBorderless property changess</summary> /// <param name="d">The dependency object.</param> /// <param name="args">The <see cref="DependencyPropertyChangedEventArgs" /> instance containing the event data.</param> private static void IsBorderlessChanged(DependencyObject d, DependencyPropertyChangedEventArgs args) { var window = d as Window; if (window == null) { return; } if ((bool)args.NewValue) { window.WindowStyle = WindowStyle.None; window.ResizeMode = ResizeMode.NoResize; window.SourceInitialized += (o, e) => { if (!GetIsBorderless(window)) { return; } var handle = (new WindowInteropHelper(window)).Handle; var hwndSource = HwndSource.FromHwnd(handle); if (hwndSource != null) { hwndSource.AddHook(WindowHook); } }; } else { window.WindowStyle = (WindowStyle)WindowStyleProperty.GetMetadata(typeof(Window)).DefaultValue; window.ResizeMode = (ResizeMode)ResizeModeProperty.GetMetadata(typeof(Window)).DefaultValue; } }