using OwlCore.WinUI.Threading;
using Windows.ApplicationModel.Core;
using Windows.UI.Xaml;
namespace OwlCore.WinUI.Triggers
{
///
/// A state trigger that is active when the is visible.
///
public class ViewExtendedIntoTitleBarTrigger : StateTriggerBase
{
///
/// Creates a new instance of .
///
public ViewExtendedIntoTitleBarTrigger()
{
if (!Windows.ApplicationModel.DesignMode.DesignModeEnabled)
{
var weakEvent = new WeakEventListener(this)
{
OnEventAction = (instance, source, eventArgs) => instance.TitleBar_IsVisibleChanged(source, eventArgs),
OnDetachAction = (weakEventListener) => CoreApplication.GetCurrentView().TitleBar.IsVisibleChanged -= weakEventListener.OnEvent
};
CoreApplication.GetCurrentView().TitleBar.IsVisibleChanged += weakEvent.OnEvent;
UpdateTrigger(CoreApplication.GetCurrentView().TitleBar.ExtendViewIntoTitleBar);
}
}
///
/// Gets a value indicating whether or not the trigger is currently active.
///
public bool IsTriggerActive { get; private set; }
///
/// Gets or sets a value indicating whether to trigger when title bar is extended or not.
///
public bool IsExtended { get; set; } = true;
private void TitleBar_IsVisibleChanged(CoreApplicationViewTitleBar sender, object args) => UpdateTrigger(sender.ExtendViewIntoTitleBar);
private void UpdateTrigger(bool isExtended)
{
IsTriggerActive = IsExtended == isExtended;
SetActive(IsTriggerActive);
}
}
}