diff --git a/samples/NotificationFlyoutSample/NotificationFlyoutSample.sln b/samples/NotificationFlyoutSample/NotificationFlyoutSample.sln
index cf09d7a..0e9767e 100644
--- a/samples/NotificationFlyoutSample/NotificationFlyoutSample.sln
+++ b/samples/NotificationFlyoutSample/NotificationFlyoutSample.sln
@@ -18,6 +18,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NotificationFlyout.Wpf.UI",
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NotificationFlyout.Wpf.UI.Controls", "..\..\src\NotificationFlyout.Wpf.UI.Controls\NotificationFlyout.Wpf.UI.Controls.csproj", "{094A2030-C430-490B-AB26-205385A0D4BF}"
EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NotificationFlyout.Uwp.UI", "..\..\src\NotificationFlyout.Uwp.UI\NotificationFlyout.Uwp.UI.csproj", "{ADE190A2-F751-4836-B8F4-BF56694A4B3F}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -139,6 +141,26 @@ Global
{094A2030-C430-490B-AB26-205385A0D4BF}.Release|x64.Build.0 = Release|x64
{094A2030-C430-490B-AB26-205385A0D4BF}.Release|x86.ActiveCfg = Release|Any CPU
{094A2030-C430-490B-AB26-205385A0D4BF}.Release|x86.Build.0 = Release|Any CPU
+ {ADE190A2-F751-4836-B8F4-BF56694A4B3F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {ADE190A2-F751-4836-B8F4-BF56694A4B3F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {ADE190A2-F751-4836-B8F4-BF56694A4B3F}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {ADE190A2-F751-4836-B8F4-BF56694A4B3F}.Debug|ARM.Build.0 = Debug|Any CPU
+ {ADE190A2-F751-4836-B8F4-BF56694A4B3F}.Debug|ARM64.ActiveCfg = Debug|Any CPU
+ {ADE190A2-F751-4836-B8F4-BF56694A4B3F}.Debug|ARM64.Build.0 = Debug|Any CPU
+ {ADE190A2-F751-4836-B8F4-BF56694A4B3F}.Debug|x64.ActiveCfg = Debug|x64
+ {ADE190A2-F751-4836-B8F4-BF56694A4B3F}.Debug|x64.Build.0 = Debug|x64
+ {ADE190A2-F751-4836-B8F4-BF56694A4B3F}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {ADE190A2-F751-4836-B8F4-BF56694A4B3F}.Debug|x86.Build.0 = Debug|Any CPU
+ {ADE190A2-F751-4836-B8F4-BF56694A4B3F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {ADE190A2-F751-4836-B8F4-BF56694A4B3F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {ADE190A2-F751-4836-B8F4-BF56694A4B3F}.Release|ARM.ActiveCfg = Release|Any CPU
+ {ADE190A2-F751-4836-B8F4-BF56694A4B3F}.Release|ARM.Build.0 = Release|Any CPU
+ {ADE190A2-F751-4836-B8F4-BF56694A4B3F}.Release|ARM64.ActiveCfg = Release|Any CPU
+ {ADE190A2-F751-4836-B8F4-BF56694A4B3F}.Release|ARM64.Build.0 = Release|Any CPU
+ {ADE190A2-F751-4836-B8F4-BF56694A4B3F}.Release|x64.ActiveCfg = Release|x64
+ {ADE190A2-F751-4836-B8F4-BF56694A4B3F}.Release|x64.Build.0 = Release|x64
+ {ADE190A2-F751-4836-B8F4-BF56694A4B3F}.Release|x86.ActiveCfg = Release|Any CPU
+ {ADE190A2-F751-4836-B8F4-BF56694A4B3F}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/samples/NotificationFlyoutSample/NotificationFlyoutSample/NotificationFlyoutSample.csproj b/samples/NotificationFlyoutSample/NotificationFlyoutSample/NotificationFlyoutSample.csproj
index 8d12e4a..bc8fa01 100644
--- a/samples/NotificationFlyoutSample/NotificationFlyoutSample/NotificationFlyoutSample.csproj
+++ b/samples/NotificationFlyoutSample/NotificationFlyoutSample/NotificationFlyoutSample.csproj
@@ -169,6 +169,10 @@
{95f851e4-87a5-4bb7-953e-c0fe3b306f0e}
NotificationFlyout.Uwp.UI.Controls
+
+ {ade190a2-f751-4836-b8f4-bf56694a4b3f}
+ NotificationFlyout.Uwp.UI
+
14.0
diff --git a/samples/NotificationFlyoutSample/NotificationFlyoutSample/Shell.xaml b/samples/NotificationFlyoutSample/NotificationFlyoutSample/Shell.xaml
index 528c697..15d425e 100644
--- a/samples/NotificationFlyoutSample/NotificationFlyoutSample/Shell.xaml
+++ b/samples/NotificationFlyoutSample/NotificationFlyoutSample/Shell.xaml
@@ -8,6 +8,7 @@
LightIconSource="/Assets/Icon-Light.ico">
+
Designer
MSBuild:Compile
+
+
+
+
+
\ No newline at end of file
diff --git a/src/NotificationFlyout.Uwp.UI.Controls/NotificationFlyout/NotificationFlyout.cs b/src/NotificationFlyout.Uwp.UI.Controls/NotificationFlyout/NotificationFlyout.cs
index 3ef6557..b81f8a0 100644
--- a/src/NotificationFlyout.Uwp.UI.Controls/NotificationFlyout/NotificationFlyout.cs
+++ b/src/NotificationFlyout.Uwp.UI.Controls/NotificationFlyout/NotificationFlyout.cs
@@ -28,8 +28,10 @@ namespace NotificationFlyout.Uwp.UI.Controls
typeof(ElementTheme), typeof(NotificationFlyout),
new PropertyMetadata(ElementTheme.Default, OnRequestedThemePropertyChanged));
+ public static INotificationFlyoutApplication _applicationInstance;
+
public static DependencyProperty ContentProperty =
- DependencyProperty.Register(nameof(Content),
+ DependencyProperty.Register(nameof(Content),
typeof(UIElement), typeof(NotificationFlyout),
new PropertyMetadata(null, OnContentPropertyChanged));
@@ -37,7 +39,6 @@ namespace NotificationFlyout.Uwp.UI.Controls
DependencyProperty.Register(nameof(ContextMenuItems),
typeof(IList), typeof(NotificationFlyout),
new PropertyMetadata(null));
-
public NotificationFlyout()
{
ContextMenuItems = new ObservableCollection();
@@ -45,8 +46,11 @@ namespace NotificationFlyout.Uwp.UI.Controls
}
internal event EventHandler ContentChanged;
+
internal event EventHandler IconSourceChanged;
+
internal event EventHandler MenuItemsChanged;
+
internal event EventHandler RequestedThemeChanged;
public UIElement Content
@@ -79,6 +83,16 @@ namespace NotificationFlyout.Uwp.UI.Controls
set => SetValue(RequestedThemeProperty, value);
}
+ public static INotificationFlyoutApplication GetApplication()
+ {
+ return _applicationInstance;
+ }
+
+ internal static void SetApplication(INotificationFlyoutApplication application)
+ {
+ _applicationInstance = application;
+ }
+
private static void OnContentPropertyChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs args)
{
var sender = dependencyObject as NotificationFlyout;
diff --git a/src/NotificationFlyout.Uwp.UI/INotificationFlyoutApplication.cs b/src/NotificationFlyout.Uwp.UI/INotificationFlyoutApplication.cs
new file mode 100644
index 0000000..f09bd81
--- /dev/null
+++ b/src/NotificationFlyout.Uwp.UI/INotificationFlyoutApplication.cs
@@ -0,0 +1,7 @@
+namespace NotificationFlyout.Uwp.UI
+{
+ public interface INotificationFlyoutApplication
+ {
+ void Exit();
+ }
+}
diff --git a/src/NotificationFlyout.Wpf.UI.Controls/NotificationFlyout - Backup.Wpf.UI.Controls.csproj b/src/NotificationFlyout.Wpf.UI.Controls/NotificationFlyout - Backup.Wpf.UI.Controls.csproj
deleted file mode 100644
index 607c21f..0000000
--- a/src/NotificationFlyout.Wpf.UI.Controls/NotificationFlyout - Backup.Wpf.UI.Controls.csproj
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
- netcoreapp3.1
- true
- uap10.0.19041
- AnyCPU;x64
- NU1702
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/NotificationFlyout.Wpf.UI.Controls/NotificationFlyout/NotificationFlyoutApplication.cs b/src/NotificationFlyout.Wpf.UI.Controls/NotificationFlyout/NotificationFlyoutApplication.cs
index 4e192df..18ddd84 100644
--- a/src/NotificationFlyout.Wpf.UI.Controls/NotificationFlyout/NotificationFlyoutApplication.cs
+++ b/src/NotificationFlyout.Wpf.UI.Controls/NotificationFlyout/NotificationFlyoutApplication.cs
@@ -1,21 +1,26 @@
-using System;
+using NotificationFlyout.Uwp.UI;
+using System;
using System.Windows;
using System.Windows.Markup;
namespace NotificationFlyout.Wpf.UI.Controls
{
[ContentProperty(nameof(Flyout))]
- public class NotificationFlyoutApplication : DependencyObject
+ public class NotificationFlyoutApplication : DependencyObject, INotificationFlyoutApplication
{
public static DependencyProperty FlyoutProperty =
DependencyProperty.Register(nameof(Flyout),
typeof(Uwp.UI.Controls.NotificationFlyout), typeof(NotificationFlyoutApplication),
new PropertyMetadata(null, OnFlyoutPropertyChanged));
+ private static NotificationFlyoutApplication _instance;
private readonly ContextMenuXamlHost _contextMenuXamlHost;
private readonly NotificationFlyoutXamlHost _notificationFlyoutXamlHost;
+
public NotificationFlyoutApplication()
{
+ _instance = this;
+
_notificationFlyoutXamlHost = new NotificationFlyoutXamlHost();
_notificationFlyoutXamlHost.ContextMenuRequested += OnContextMenuRequested;
_notificationFlyoutXamlHost.Show();
@@ -24,12 +29,20 @@ namespace NotificationFlyout.Wpf.UI.Controls
_contextMenuXamlHost.Show();
}
+ public static INotificationFlyoutApplication Current => _instance;
+
public Uwp.UI.Controls.NotificationFlyout Flyout
{
get => (Uwp.UI.Controls.NotificationFlyout)GetValue(FlyoutProperty);
set => SetValue(FlyoutProperty, value);
}
+ public void Exit()
+ {
+ _contextMenuXamlHost.Close();
+ _notificationFlyoutXamlHost.Close();
+ }
+
public void HideFlyout()
{
_notificationFlyoutXamlHost.HideFlyout();
@@ -53,8 +66,10 @@ namespace NotificationFlyout.Wpf.UI.Controls
private void OnFlyoutPropertyChanged()
{
- _notificationFlyoutXamlHost.SetFlyout(Flyout);
- _contextMenuXamlHost.SetFlyout(Flyout);
+ _notificationFlyoutXamlHost?.SetFlyout(Flyout);
+ _contextMenuXamlHost?.SetFlyout(Flyout);
+
+ Uwp.UI.Controls.NotificationFlyout.SetApplication(this);
}
}
}
\ No newline at end of file
diff --git a/src/NotificationFlyout.Wpf.UI.Controls/NotificationFlyout/NotificationFlyoutXamlHost.cs b/src/NotificationFlyout.Wpf.UI.Controls/NotificationFlyout/NotificationFlyoutXamlHost.cs
index 2e26307..b1aeecf 100644
--- a/src/NotificationFlyout.Wpf.UI.Controls/NotificationFlyout/NotificationFlyoutXamlHost.cs
+++ b/src/NotificationFlyout.Wpf.UI.Controls/NotificationFlyout/NotificationFlyoutXamlHost.cs
@@ -136,6 +136,11 @@ namespace NotificationFlyout.Wpf.UI.Controls
_taskbarHelper.TaskbarChanged += OnTaskbarChanged;
}
+ protected override void OnClosed(EventArgs args)
+ {
+ _notificationIconHelper.Dispose();
+ }
+
private void UpdateFlyoutContent()
{
if (_flyout == null) return;