toast-notifications-csharp

Notificaciones en C# con ToastNotifications

ToastNotifications es una biblioteca de código abierto desarrollada por Rafal Łopatka que permite mostrar notificaciones personalizables en aplicaciones WPF (Windows Presentation Foundation).

Las notificaciones en las aplicaciones de escritorio son una característica esencial para mejorar la interacción con el usuario, informándole sobre eventos importantes, errores, o actualizaciones.

Ofrece una variedad de tipos de notificaciones y es altamente configurable, permitiendo a los desarrolladores adaptar las notificaciones a las necesidades específicas de sus aplicaciones.

toast-notification-demo

Características principales,

  • Diversos tipos de notificaciones: Información, advertencia, error y éxito.
  • Personalización: Configuración de estilos, duraciones y animaciones.
  • Fácil integración: Simple de integrar en proyectos WPF existentes.
  • Soporte para múltiples notificaciones: Capacidad de mostrar varias notificaciones simultáneamente.

Instalación

Para comenzar a usar ToastNotifications en tu proyecto WPF, primero necesitas instalar la biblioteca. Puedes hacerlo mediante NuGet Package Manager en Visual Studio o utilizando la consola de NuGet con el siguiente comando:

Install-Package ToastNotifications

Uso de Toastnotifications

Una vez instalada la biblioteca, puedes comenzar a configurarla en tu proyecto.

XAML (MainWindow.xaml)

Asegúrate de tener una ventana básica configurada en tu proyecto WPF. Puedes usar el siguiente código como punto de partida:

<Window x:Class="ToastNotificationsExample.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Button Content="Show Notification" HorizontalAlignment="Center" VerticalAlignment="Center" Click="ShowNotification_Click"/>
    </Grid>
</Window>

Code-behind (MainWindow.xaml.cs)

En el archivo de code-behind, importa las bibliotecas necesarias y configura el controlador de eventos para el botón.

using System.Windows;
using ToastNotifications;
using ToastNotifications.Lifetime;
using ToastNotifications.Messages;
using ToastNotifications.Position;

namespace ToastNotificationsExample
{
    public partial class MainWindow : Window
    {
        private Notifier _notifier;

        public MainWindow()
        {
            InitializeComponent();

            _notifier = new Notifier(cfg =>
            {
                cfg.PositionProvider = new WindowPositionProvider(
                    parentWindow: Application.Current.MainWindow,
                    corner: Corner.BottomRight,
                    offsetX: 10,
                    offsetY: 10);

                cfg.LifetimeSupervisor = new TimeAndCountBasedLifetimeSupervisor(
                    notificationLifetime: TimeSpan.FromSeconds(3),
                    maximumNotificationCount: MaximumNotificationCount.FromCount(5));

                cfg.Dispatcher = Application.Current.Dispatcher;
            });
        }

        private void ShowNotification_Click(object sender, RoutedEventArgs e)
        {
            _notifier.ShowInformation("This is an information toast notification!");
        }
    }
}

Mostrar Notificaciones

Con la configuración inicial en su lugar, puedes mostrar diferentes tipos de notificaciones: información, éxito, advertencia y error. Aquí se muestra cómo hacerlo:

private void ShowNotification_Click(object sender, RoutedEventArgs e)
{
    _notifier.ShowInformation("This is an information toast notification!");
    _notifier.ShowSuccess("This is a success toast notification!");
    _notifier.ShowWarning("This is a warning toast notification!");
    _notifier.ShowError("This is an error toast notification!");
}

Personalización

ToastNotifications permite personalizar el diseño y comportamiento de las notificaciones. Puedes definir plantillas personalizadas y cambiar la duración de las notificaciones.

Para crear una plantilla personalizada, necesitas definir un DataTemplate en tu archivo XAML:

<Window.Resources>
    <DataTemplate x:Key="CustomNotificationTemplate">
        <Border Background="LightGray" Padding="10" CornerRadius="5">
            <TextBlock Text="{Binding Message}" Foreground="Black"/>
        </Border>
    </DataTemplate>
</Window.Resources>

Luego, puedes asignar esta plantilla a tus notificaciones:

_notifier = new Notifier(cfg =>
{
    cfg.PositionProvider = new WindowPositionProvider(
        parentWindow: Application.Current.MainWindow,
        corner: Corner.BottomRight,
        offsetX: 10,
        offsetY: 10);

    cfg.LifetimeSupervisor = new TimeAndCountBasedLifetimeSupervisor(
        notificationLifetime: TimeSpan.FromSeconds(3),
        maximumNotificationCount: MaximumNotificationCount.FromCount(5));

    cfg.Dispatcher = Application.Current.Dispatcher;

    cfg.DisplayOptions.Width = 250;
    cfg.DisplayOptions.NotificationTemplate = (DataTemplate)FindResource("CustomNotificationTemplate");
});