private void TryNextDisplayNotication() { if (NoticationRequestQueue.TryDequeue(out var payload)) { _CurrentNotication = payload; LiteNotification.DataContext = payload; LiteNotification.ShowDismissButton = payload.IsShowDismissButton; LiteNotification.Show((int)(payload.ShowDuration ?? DefaultShowDuration).TotalMilliseconds); } }
private void PushNextNotication(Services.InAppNotificationPayload payload) { NoticationRequestQueue.Enqueue(payload); // 前に表示した通知が時間設定されていない場合には強制非表示 if (_CurrentNotication != null && _CurrentNotication.ShowDuration == null) { LiteNotification.Dismiss(); } else { TryNextDisplayNotication(); } }
private void PushNextNotication(Services.InAppNotificationPayload payload) { NoticationRequestQueue.Enqueue(payload); _ = _uiDispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { // 前に表示した通知が時間設定されていない場合には強制非表示 if (_CurrentNotication != null && _CurrentNotication.ShowDuration == null) { LiteNotification.Dismiss(); } else { TryNextDisplayNotication(); } }); }
private void TryNextDisplayNotication() { // only show Active Window if (_lastActivationState == Windows.UI.Core.CoreWindowActivationState.Deactivated) { NoticationRequestQueue.Clear(); return; } if (NoticationRequestQueue.TryDequeue(out var payload)) { _CurrentNotication = payload; LiteNotification.DataContext = payload; LiteNotification.ShowDismissButton = payload.IsShowDismissButton; LiteNotification.Show((int)(payload.ShowDuration ?? DefaultShowDuration).TotalMilliseconds); } }
private void LiteNotification_Dismissed(object sender, EventArgs e) { _CurrentNotication = null; (sender as Microsoft.Toolkit.Uwp.UI.Controls.InAppNotification).DataContext = null; TryNextDisplayNotication(); }
private void OnNotificationRequested(Services.InAppNotificationPayload payload) { PushNextNotication(payload); }