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); } } }