diff --git a/samples/NotificationFlyoutSample/Shell.xaml b/samples/NotificationFlyoutSample/Shell.xaml index 909ae1f..1e77c15 100644 --- a/samples/NotificationFlyoutSample/Shell.xaml +++ b/samples/NotificationFlyoutSample/Shell.xaml @@ -8,6 +8,7 @@ diff --git a/src/TheXamlGuy.NotificationFlyout.Uwp.UI.Controls/NotificationFlyoutHost/NotificationFlyoutHost.cs b/src/TheXamlGuy.NotificationFlyout.Uwp.UI.Controls/NotificationFlyoutHost/NotificationFlyoutHost.cs index c61b741..fd06a9c 100644 --- a/src/TheXamlGuy.NotificationFlyout.Uwp.UI.Controls/NotificationFlyoutHost/NotificationFlyoutHost.cs +++ b/src/TheXamlGuy.NotificationFlyout.Uwp.UI.Controls/NotificationFlyoutHost/NotificationFlyoutHost.cs @@ -20,11 +20,8 @@ namespace TheXamlGuy.NotificationFlyout.Uwp.UI.Controls new PropertyMetadata(null)); private Flyout _flyout; - private bool _isColorPrevalence; - private bool _isLoaded; private NotificationFlyout _notificationFlyout; private NotificationFlyoutPresenter _notificationFlyoutPresenter; - private string _placement; private Grid _root; public NotificationFlyoutHost() => DefaultStyleKey = typeof(NotificationFlyoutHost); @@ -49,8 +46,8 @@ namespace TheXamlGuy.NotificationFlyout.Uwp.UI.Controls public void SetFlyoutPlacement(string placement) { - _placement = placement; - UpdateFlyoutVisualState(); + if (_notificationFlyoutPresenter == null) return; + _notificationFlyoutPresenter.UpdatePlacementVisualState(placement); } public void SetOwningFlyout(NotificationFlyout flyout) @@ -96,7 +93,6 @@ namespace TheXamlGuy.NotificationFlyout.Uwp.UI.Controls public void UpdateTheme(bool isColorPrevalence) { - _isColorPrevalence = isColorPrevalence; if (_notificationFlyoutPresenter == null) return; _notificationFlyoutPresenter.UpdateThemeVisualState(isColorPrevalence); } @@ -104,9 +100,11 @@ namespace TheXamlGuy.NotificationFlyout.Uwp.UI.Controls protected override void OnApplyTemplate() { _notificationFlyoutPresenter = GetTemplateChild("NotificationFlyoutPresenter") as NotificationFlyoutPresenter; - _notificationFlyoutPresenter.ApplyTemplate(); - _notificationFlyoutPresenter.UpdateThemeVisualState(_isColorPrevalence); + if (_notificationFlyoutPresenter != null) + { + _notificationFlyoutPresenter.ApplyTemplate(); + } _flyout = GetTemplateChild("Flyout") as Flyout; if (_flyout != null) @@ -123,17 +121,6 @@ namespace TheXamlGuy.NotificationFlyout.Uwp.UI.Controls } _root = GetTemplateChild("Root") as Grid; - if (GetTemplateChild("ContentRoot") is Grid contentRoot) - { - contentRoot.Shadow = new ThemeShadow(); - - var currentTranslation = contentRoot.Translation; - var translation = new Vector3(currentTranslation.X, currentTranslation.Y, 16.0f); - contentRoot.Translation = translation; - } - - _isLoaded = true; - UpdateFlyoutVisualState(); } private void OnFlyoutClosed(object sender, object args) => _notificationFlyout?.InvokeClosedEvent(args); @@ -143,13 +130,5 @@ namespace TheXamlGuy.NotificationFlyout.Uwp.UI.Controls private void OnFlyoutOpened(object sender, object args) => _notificationFlyout?.InvokeOpenedEvent(args); private void OnFlyoutOpening(object sender, object args) => _notificationFlyout?.InvokeOpeningEvent(args); - - private void UpdateFlyoutVisualState() - { - if (!_isLoaded) return; - - if (string.IsNullOrEmpty(_placement)) return; - VisualStateManager.GoToState(this, _placement, true); - } } } \ No newline at end of file diff --git a/src/TheXamlGuy.NotificationFlyout.Uwp.UI.Controls/NotificationFlyoutHost/NotificationFlyoutHost.xaml b/src/TheXamlGuy.NotificationFlyout.Uwp.UI.Controls/NotificationFlyoutHost/NotificationFlyoutHost.xaml index ea585ab..6e87154 100644 --- a/src/TheXamlGuy.NotificationFlyout.Uwp.UI.Controls/NotificationFlyoutHost/NotificationFlyoutHost.xaml +++ b/src/TheXamlGuy.NotificationFlyout.Uwp.UI.Controls/NotificationFlyoutHost/NotificationFlyoutHost.xaml @@ -54,20 +54,10 @@ AreOpenCloseAnimationsEnabled="False" FlyoutPresenterStyle="{StaticResource BottomFlyoutPresenterStyle}" ShouldConstrainToRootBounds="False"> - - - - - - - - + @@ -75,29 +65,29 @@ - - + - - + - - + - - + diff --git a/src/TheXamlGuy.NotificationFlyout.Uwp.UI.Controls/NotificationFlyoutPresenter/NotificationFlyoutPresenter.cs b/src/TheXamlGuy.NotificationFlyout.Uwp.UI.Controls/NotificationFlyoutPresenter/NotificationFlyoutPresenter.cs index 1e8d39d..479b79e 100644 --- a/src/TheXamlGuy.NotificationFlyout.Uwp.UI.Controls/NotificationFlyoutPresenter/NotificationFlyoutPresenter.cs +++ b/src/TheXamlGuy.NotificationFlyout.Uwp.UI.Controls/NotificationFlyoutPresenter/NotificationFlyoutPresenter.cs @@ -1,15 +1,28 @@ -using Windows.UI.Xaml; +using System.Numerics; +using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; +using Windows.UI.Xaml.Media; namespace TheXamlGuy.NotificationFlyout.Uwp.UI.Controls { public class NotificationFlyoutPresenter : ContentControl { - public NotificationFlyoutPresenter() + public NotificationFlyoutPresenter() => DefaultStyleKey = typeof(NotificationFlyoutPresenter); + + protected override void OnApplyTemplate() { - DefaultStyleKey = typeof(NotificationFlyoutPresenter); + if (GetTemplateChild("Root") is Grid contentRoot) + { + contentRoot.Shadow = new ThemeShadow(); + + var currentTranslation = contentRoot.Translation; + var translation = new Vector3(currentTranslation.X, currentTranslation.Y, 16.0f); + contentRoot.Translation = translation; + } } + internal void UpdatePlacementVisualState(string placement) => VisualStateManager.GoToState(this, placement, true); + internal void UpdateThemeVisualState(bool isColorPrevalence) => VisualStateManager.GoToState(this, isColorPrevalence ? "ColorPrevalenceTheme" : "DefaultTheme", true); } } \ No newline at end of file diff --git a/src/TheXamlGuy.NotificationFlyout.Uwp.UI.Controls/NotificationFlyoutPresenter/NotificationFlyoutPresenter.xaml b/src/TheXamlGuy.NotificationFlyout.Uwp.UI.Controls/NotificationFlyoutPresenter/NotificationFlyoutPresenter.xaml index 78dbf0e..349817a 100644 --- a/src/TheXamlGuy.NotificationFlyout.Uwp.UI.Controls/NotificationFlyoutPresenter/NotificationFlyoutPresenter.xaml +++ b/src/TheXamlGuy.NotificationFlyout.Uwp.UI.Controls/NotificationFlyoutPresenter/NotificationFlyoutPresenter.xaml @@ -35,7 +35,7 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -70,7 +104,7 @@ - +