feat: enhance PopConfirm with async command support and improve binding. add more demo.
This commit is contained in:
@@ -9,9 +9,23 @@
|
||||
x:DataType="viewModels:PopConfirmDemoViewModel"
|
||||
x:Class="Ursa.Demo.Pages.PopConfirmDemo">
|
||||
<StackPanel HorizontalAlignment="Left">
|
||||
<TextBlock Text="Default PopConfirm" Margin="0 16" />
|
||||
<u:PopConfirm PopupHeader="Header" PopupContent="Content"
|
||||
ConfirmCommand="{Binding ConfirmCommand}"
|
||||
CancelCommand="{Binding Path=CancelCommand}" >
|
||||
ConfirmCommand="{Binding ConfirmCommand}"
|
||||
CancelCommand="{Binding Path=CancelCommand}" >
|
||||
<Button Content="Hello World"></Button>
|
||||
</u:PopConfirm>
|
||||
<TextBlock Text="Hover to trigger" Margin="0 16" />
|
||||
<u:PopConfirm PopupHeader="Header" PopupContent="Content"
|
||||
TriggerMode="Focus"
|
||||
ConfirmCommand="{Binding ConfirmCommand}"
|
||||
CancelCommand="{Binding Path=CancelCommand}" >
|
||||
<Button Content="Hello World"></Button>
|
||||
</u:PopConfirm>
|
||||
<TextBlock Text="Asynchronized command support" Margin="0 16" />
|
||||
<u:PopConfirm PopupHeader="Header" PopupContent="Content"
|
||||
ConfirmCommand="{Binding AsyncConfirmCommand}"
|
||||
CancelCommand="{Binding Path=AsyncCancelCommand}" >
|
||||
<Button Content="Hello World"></Button>
|
||||
</u:PopConfirm>
|
||||
</StackPanel>
|
||||
|
||||
@@ -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"]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user