From 782d9f7a3a62a43ebe33ae99dff764adc96fea4e Mon Sep 17 00:00:00 2001 From: Rene Evertz Date: Tue, 15 Apr 2025 13:21:03 +0200 Subject: [PATCH] Background Fade --- BeWo/MainControl.xaml.cs | 36 +++++++++++++++----- BeWo/View/Windows/AnimatedBeWoWindow.xaml.cs | 5 --- 2 files changed, 28 insertions(+), 13 deletions(-) diff --git a/BeWo/MainControl.xaml.cs b/BeWo/MainControl.xaml.cs index 0081bc5f3..e50af7cca 100644 --- a/BeWo/MainControl.xaml.cs +++ b/BeWo/MainControl.xaml.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; +using System.IO.Ports; using System.Linq; using System.Runtime.Remoting.Contexts; using System.Security.Cryptography; @@ -201,10 +202,10 @@ namespace BeWo _CurrentAnimatedBeWoWindow = value; if (value is null) - HideModalBackground(); + HideModalBackgroundFade(.5); else { - ShowModalBackground(); + ShowModalBackgroundFade(.5); } } } @@ -949,18 +950,26 @@ namespace BeWo } } - internal void ShowModalBackground() + internal void ShowModalBackgroundFade(double duration = 0.3, double opacity = 0.5) + { + if (ModalPopupBackGround is Grid && grid_main.Children.Contains(ModalPopupBackGround)) + return; + + ShowModalBackground(0); + DoubleAnimation lAnim = new DoubleAnimation(opacity, new Duration(TimeSpan.FromSeconds(duration))); + ModalPopupBackGround.BeginAnimation(OpacityProperty, lAnim); + } + + internal void ShowModalBackground(double start_opacity = .5) { if (ModalPopupBackGround is Grid && grid_main.Children.Contains(ModalPopupBackGround)) - { return; - } ModalPopupBackGround = new Grid { IsHitTestVisible = true, Background = Brushes.White, - Opacity = .5 + Opacity = start_opacity }; Grid.SetColumnSpan(ModalPopupBackGround, 3); @@ -971,12 +980,23 @@ namespace BeWo Panel.SetZIndex(ModalPopupBackGround, 500); } + internal void HideModalBackgroundFade(double duration = 0.3) + { + if (ModalPopupBackGround is null || !grid_main.Children.Contains(ModalPopupBackGround)) + return; + + DoubleAnimation lAnim = new DoubleAnimation(0, new Duration(TimeSpan.FromSeconds(duration))); + lAnim.Completed += (s, e) => + { + HideModalBackground(); + }; + ModalPopupBackGround.BeginAnimation(OpacityProperty, lAnim); + } + internal void HideModalBackground() { if (ModalPopupBackGround is null || !grid_main.Children.Contains(ModalPopupBackGround)) - { return; - } grid_main.Children.Remove(ModalPopupBackGround); ModalPopupBackGround = null; diff --git a/BeWo/View/Windows/AnimatedBeWoWindow.xaml.cs b/BeWo/View/Windows/AnimatedBeWoWindow.xaml.cs index c1f9055e3..369de6bf3 100644 --- a/BeWo/View/Windows/AnimatedBeWoWindow.xaml.cs +++ b/BeWo/View/Windows/AnimatedBeWoWindow.xaml.cs @@ -64,11 +64,6 @@ namespace BeWo.View.Windows rootGroupBox.Content = fe; } - public AnimatedBeWoWindow(FrameworkElement fe, string stylestring) : this(fe) - { - rootGroupBox.Style = (Style)FindResource(stylestring); - } - public void Window_Closing(object sender, CancelEventArgs e) { if (!closeStoryBoardCompleted && !isClosing)