/// <summary>
 /// Reacts on the window state changed event
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void OnWindowStateChanged(object sender, EventArgs e)
 {
     switch (WindowState)
     {
         case WindowState.Normal:
             if (storedResizeDirections != null)
             {
                 ResizeDirections = storedResizeDirections.Value;
                 storedResizeDirections = null;
             }
             break;
         case WindowState.Minimized:
             break;
         case WindowState.Maximized:
             storedResizeDirections = ResizeDirections;
             ResizeDirections = ResizeDirectionFlags.None;
             break;
     }
 }
 private void UpdateBorders(ResizeDirectionFlags value)
 {
     // ReSharper disable PossibleNullReferenceException
     ((Thumb)GetTemplateChild("PART_SizeN")).IsEnabled = (value & ResizeDirectionFlags.SizeN) == ResizeDirectionFlags.SizeN;
     ((Thumb)GetTemplateChild("PART_SizeS")).IsEnabled = (value & ResizeDirectionFlags.SizeS) == ResizeDirectionFlags.SizeS;
     ((Thumb)GetTemplateChild("PART_SizeW")).IsEnabled = (value & ResizeDirectionFlags.SizeW) == ResizeDirectionFlags.SizeW;
     ((Thumb)GetTemplateChild("PART_SizeE")).IsEnabled = (value & ResizeDirectionFlags.SizeE) == ResizeDirectionFlags.SizeE;
     ((Thumb)GetTemplateChild("PART_SizeSE")).IsEnabled = (value & ResizeDirectionFlags.SizeSE) == ResizeDirectionFlags.SizeSE;
     ((Thumb)GetTemplateChild("PART_SizeNW")).IsEnabled = (value & ResizeDirectionFlags.SizeNW) == ResizeDirectionFlags.SizeNW;
     ((Thumb)GetTemplateChild("PART_SizeSW")).IsEnabled = (value & ResizeDirectionFlags.SizeSW) == ResizeDirectionFlags.SizeSW;
     ((Thumb)GetTemplateChild("PART_SizeNE")).IsEnabled = (value & ResizeDirectionFlags.SizeNE) == ResizeDirectionFlags.SizeNE;
     // ReSharper restore PossibleNullReferenceException
 }
 /// <summary>
 /// Initialize the Transparent Window
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void InitializeTransparentWindow(object sender, EventArgs e)
 {
     // First Time initialization
     if (GetValue(ResizeDirectionsProperty) == null)
         ResizeDirections =
             ResizeDirectionFlags.SizeN |
             ResizeDirectionFlags.SizeS |
             ResizeDirectionFlags.SizeW |
             ResizeDirectionFlags.SizeE |
             ResizeDirectionFlags.SizeSE |
             ResizeDirectionFlags.SizeNW |
             ResizeDirectionFlags.SizeSW |
             ResizeDirectionFlags.SizeNE;
 }