Using CanExecute in RelayCommand MVVM Toolkit
Asked Answered
H

1

7

I have bound button command to one RelayCommand from MVVM Toolkit, which executes some function, with following:

[RelayCommand]
private async void SomeMethod() {}

I want to prevent multiple clicks on the button hence, preventing multiple method calls via CanExecute parameter of RelayCommand, but I can't figure that one out.

I know that RelayCommand first checks with CanExecute if it is possible to execute the command, but I do not understand how to go about implementing it.

I have searched numerous questions on the topic but could get nowhere near to solution.

Edit: Also there is no SomeMethod.isRunning property.

Hesky answered 25/7, 2022 at 15:23 Comment(0)
D
12

To implement CanExecute, You can try the following example:

[RelayCommand(CanExecute = nameof(IsSomeMethodExcutable))]
private async void SomeMethod(){}

private bool IsSomeMethodExcutable() { return _isBusy;}
Dactylogram answered 18/12, 2022 at 6:30 Comment(1)
I believe that this should be the accepted answer. The RelayCommand has the correct signature private async void and adding the CanExecute parameter specifies the method to call when the CanExecute state changes. The only other thing needed is to call SomeMethodCommand.NotifyCanExecuteChanged(); in a method that changes the state of _isBusyImpeachable

© 2022 - 2025 — McMap. All rights reserved.