Files
ShrlAlgoToolkit/WPFluent/Services/SnackbarService.cs

45 lines
1.4 KiB
C#

using WPFluent.Controls;
namespace WPFluent;
/// <summary>
/// A service that provides methods related to displaying the <see cref="Snackbar"/>.
/// </summary>
public class SnackbarService : ISnackbarService
{
private SnackbarPresenter? _presenter;
private Snackbar? _snackbar;
/// <inheritdoc/>
public SnackbarPresenter? GetSnackbarPresenter() { return _presenter; }
/// <inheritdoc/>
public void SetSnackbarPresenter(SnackbarPresenter contentPresenter) { _presenter = contentPresenter; }
/// <inheritdoc/>
public void Show(string title, string message, ControlAppearance appearance, IconElement? icon, TimeSpan timeout)
{
if(_presenter is null)
{
throw new InvalidOperationException($"The SnackbarPresenter was never set");
}
_snackbar ??= new Snackbar(_presenter);
_snackbar.SetCurrentValue(Snackbar.TitleProperty, title);
_snackbar.SetCurrentValue(System.Windows.Controls.ContentControl.ContentProperty, message);
_snackbar.SetCurrentValue(Snackbar.AppearanceProperty, appearance);
_snackbar.SetCurrentValue(Snackbar.IconProperty, icon);
_snackbar.SetCurrentValue(Snackbar.TimeoutProperty, timeout.TotalSeconds == 0 ? DefaultTimeOut : timeout);
_snackbar.Show(true);
}
/// <inheritdoc/>
public TimeSpan DefaultTimeOut { get; set; } = TimeSpan.FromSeconds(5);
}