Example #1
0
        /// <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;
            }
        }