diff --git a/ZuneModdingHelper/AppWindow.xaml b/ZuneModdingHelper/AppWindow.xaml
index 32eae82..604f552 100644
--- a/ZuneModdingHelper/AppWindow.xaml
+++ b/ZuneModdingHelper/AppWindow.xaml
@@ -29,6 +29,11 @@
+
+
+
+
@@ -120,7 +125,7 @@
-
+
diff --git a/ZuneModdingHelper/AppWindow.xaml.cs b/ZuneModdingHelper/AppWindow.xaml.cs
index 7d7b877..720b70d 100644
--- a/ZuneModdingHelper/AppWindow.xaml.cs
+++ b/ZuneModdingHelper/AppWindow.xaml.cs
@@ -5,6 +5,7 @@ using System.Windows;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Interop;
+using System.Windows.Media.Animation;
using ZuneModdingHelper.Controls;
using ZuneModdingHelper.Messages;
using ZuneModdingHelper.Pages;
@@ -18,14 +19,18 @@ namespace ZuneModdingHelper
{
private IntPtr _windowHandle;
private int _selectedPivotIdx = -1;
+ private int _lastClosedDialog = 0;
private readonly Type[] _pages = [typeof(ModsPage), typeof(SettingsPage), typeof(AboutPage)];
+ private readonly Storyboard _dialogExitAnimation;
public AppWindow()
{
InitializeComponent();
Pivot.Loaded += Pivot_Loaded;
+ _dialogExitAnimation = (Storyboard)Resources["DialogExitAnimation"];
+
WeakReferenceMessenger.Default.Register(this);
WeakReferenceMessenger.Default.Register(this);
}
@@ -92,12 +97,27 @@ namespace ZuneModdingHelper
{
ViewModel = message.ViewModel
};
- DialogPresenter.Visibility = Visibility.Visible;
+
+ DialogPresenter.IsHitTestVisible = true;
}
void IRecipient.Receive(CloseDialogMessage message)
{
- DialogPresenter.Visibility = Visibility.Collapsed;
+ DialogPresenter.IsHitTestVisible = false;
+
+ _dialogExitAnimation.Completed += DialogExitAnimation_Completed;
+
+ _lastClosedDialog = DialogPresenter.Content.GetHashCode();
+ (DialogPresenter.Content as FrameworkElement)?.BeginStoryboard(_dialogExitAnimation);
+ }
+
+ private void DialogExitAnimation_Completed(object sender, EventArgs e)
+ {
+ _dialogExitAnimation.Completed -= DialogExitAnimation_Completed;
+
+ if (_lastClosedDialog != DialogPresenter.Content?.GetHashCode())
+ return;
+
DialogPresenter.Content = null;
}
}