I know this is a common questions,but I could not find an answer anywhere.
I want to prevent "quick double tapping" in Android.
I m using prism and Im not sure how I should implement/make use of "CanNavigateAsync(INavigationParameters).
Suppose I have a toolbarItem to "Add something" and this is mapped to a command and I do the following:
private DelegateCommand<MyVM> tappedToolbarItemCommand;
public DelegateCommand<MyVM> TappedToolbarItemCommand
{
get
{
return tappedToolbarItemCommand
?? (tappedToolbarItemCommand = new DelegateCommand<MyVM>(async args => await OnToolbarItemTapped(args))
.ObservesProperty(() => !IsBusy)
.ObservesCanExecute(CanExecute());
}
}
private bool CanExecute()
{
if (IsBusy) return false;
//HOW DO I MAKE USE OF "CanNavigateAsync"
CanNavigateAsync(??) what parameters?
return true;
}
private async Task OnToolbarItemTapped(MyVM vm)
{
await NavigationService.NavigateAsync($"NavPage/{nameof(MyPage)}");
}
So How do you prevent double tapping using Prism ?
Many thanks
You'll be able to simply do this to prevent a double click:
private bool _canNavigate = true;
public bool CanNavigate
{
get { return _canNavigate; }
set { SetProperty(ref _canNavigate, value); }
}
NavigateCommand = new DelegateCommand(Navigate).ObservesCanExecute((vm) => CanNavigate);
async void Navigate()
{
CanNavigate = false;
await _navigationService.NavigateAsync("ViewB");
CanNavigate = true;
}
There is related link. https://github.com/PrismLibrary/Prism/issues/442