feat: enhance PopConfirm with async command support and improve binding. add more demo.

This commit is contained in:
Dong Bin
2025-04-18 17:54:16 +08:00
parent 2a081c0f95
commit 67025dca9c
4 changed files with 52 additions and 20 deletions

View File

@@ -7,27 +7,42 @@ using Ursa.Controls;
namespace Ursa.Demo.ViewModels;
public partial class PopConfirmDemoViewModel: ObservableObject
public class PopConfirmDemoViewModel : ObservableObject
{
internal WindowToastManager? ToastManager { get; set; }
public ICommand ConfirmCommand { get; }
public ICommand CancelCommand { get; }
public PopConfirmDemoViewModel()
{
ConfirmCommand = new AsyncRelayCommand(OnConfirm);
AsyncConfirmCommand = new AsyncRelayCommand(OnConfirmAsync);
AsyncCancelCommand = new RelayCommand(OnCancelAsync);
ConfirmCommand = new RelayCommand(OnConfirm);
CancelCommand = new RelayCommand(OnCancel);
}
private async Task OnConfirm()
{
await Task.Delay(3000);
ToastManager?.Show(new Toast("Confirmed"), type: NotificationType.Success, classes: ["Light"]);
}
internal WindowToastManager? ToastManager { get; set; }
public ICommand ConfirmCommand { get; }
public ICommand CancelCommand { get; }
public ICommand AsyncConfirmCommand { get; }
public ICommand AsyncCancelCommand { get; }
private void OnCancel()
{
ToastManager?.Show(new Toast("Canceled"), type:NotificationType.Error, classes: ["Light"]);
ToastManager?.Show(new Toast("Canceled"), NotificationType.Error, classes: ["Light"]);
}
private void OnConfirm()
{
ToastManager?.Show(new Toast("Confirmed"), NotificationType.Success, classes: ["Light"]);
}
private async Task OnConfirmAsync()
{
await Task.Delay(3000);
ToastManager?.Show(new Toast("Async Confirmed"), NotificationType.Success, classes: ["Light"]);
}
private void OnCancelAsync()
{
ToastManager?.Show(new Toast("Async Canceled"), NotificationType.Error, classes: ["Light"]);
}
}