public async Task HandleToast(int fadeOutDelay = 0) { fadeOutDelay = fadeOutDelay > 0 ? fadeOutDelay : Config.Instance.NotificationFadeOutDelay; _window.Visibility = Visibility.Visible; _window.SizeChanged += (sender, args) => { _window.Left -= args.NewSize.Width - args.PreviousSize.Width; _window.Top -= args.NewSize.Height - args.PreviousSize.Height; ToastManager.UpdateToasts(); }; while (DateTime.UtcNow - _startUpTime < TimeSpan.FromSeconds(fadeOutDelay + FadeInDuration)) { if (_forceClose) { break; } await Task.Delay(100); if (!_window.IsMouseOver) { continue; } _startUpTime = DateTime.UtcNow - TimeSpan.FromSeconds(FadeOutSpeedup); } await _window.FadeOut(); }
public ToastWindow(UserControl control) { InitializeComponent(); ContentControl.Content = control; _forceClose = () => ToastManager.ForceCloseToast(control); }