I need to execute async delete operation with user confirmation. Something like this:
public ReactiveAsyncCommand DeleteCommand { get; protected set; }
...
DeleteCommand = new ReactiveAsyncCommand();
DeleteCommand.RegisterAsyncAction(DeleteEntity);
...
private void DeleteEntity(object obj)
{
if (MessageBox.Show("Do you really want to delete this entity?", "Confirm", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
{
//some delete operations
}
}
The problem is the MessageBox would execute asynchronously too. Which is the best pattern in ReactiveUI to ask user synchronously and then execute method asynchronously?
The most straightforward way to do this is to just use two commands:
public ReactiveCommand DeleteCommand { get; protected set; }
private ReactiveAsyncCommand ExecuteDelete { get; protected set; }
/*
* In the Constructor
*/
ExecuteDelete = new ReactiveAsyncCommand();
ExecuteDelete.RegisterAsyncAction(() => /* Do the delete */);
DeleteCommand = new ReactiveCommand(ExecuteDelete.CanExecuteObservable);
DeleteCommand
.Where(_ => MessageBox.Show("Delete?") == MessageBoxResult.Yes)
.InvokeCommand(ExecuteDelete);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With