47 lines
1.5 KiB
C#
47 lines
1.5 KiB
C#
using Windows.UI.Xaml;
|
|
using Windows.UI.Xaml.Controls;
|
|
|
|
namespace NotificationFlyout.Uwp.UI.Controls
|
|
{
|
|
public class NotificationFlyoutPresenter : ContentControl
|
|
{
|
|
private NotificationFlyoutContentPresenter _contentPresenter;
|
|
|
|
public NotificationFlyoutPresenter()
|
|
{
|
|
DefaultStyleKey = typeof(NotificationFlyoutPresenter);
|
|
ActualThemeChanged += OnActualThemeChanged;
|
|
}
|
|
|
|
protected override void OnApplyTemplate()
|
|
{
|
|
_contentPresenter = GetTemplateChild("ContentPresenter") as NotificationFlyoutContentPresenter;
|
|
}
|
|
|
|
public void SetBackground(string theme)
|
|
{
|
|
if (_contentPresenter == null) return;
|
|
if (RequestedTheme == ElementTheme.Default)
|
|
{
|
|
ActualThemeChanged -= OnActualThemeChanged;
|
|
|
|
switch (theme)
|
|
{
|
|
case "Dark":
|
|
_contentPresenter.SetValue(RequestedThemeProperty, ElementTheme.Dark);
|
|
break;
|
|
case "Light":
|
|
_contentPresenter.SetValue(RequestedThemeProperty, ElementTheme.Light);
|
|
break;
|
|
}
|
|
|
|
ActualThemeChanged += OnActualThemeChanged;
|
|
}
|
|
}
|
|
|
|
private void OnActualThemeChanged(FrameworkElement sender, object args)
|
|
{
|
|
_contentPresenter.SetValue(RequestedThemeProperty, RequestedTheme);
|
|
}
|
|
}
|
|
} |