Предотвратить двойное нажатие на андроид Призма ксамарин - PullRequest
3 голосов
/ 24 марта 2019

Я знаю, что это общие вопросы, но я нигде не смог найти ответ.

Я хочу предотвратить "быстрое двойное касание" в Android.

Я использую призму, и яне уверен, как я должен реализовать / использовать "CanNavigateAsync (INavigationParameters).

Предположим, у меня есть toolbarItem для" Добавить что-то ", и это сопоставлено с командой, и я делаю следующее:

    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)}");                        
    }

Итак, как предотвратить двойное касание с помощью Prism?

Большое спасибо

1 Ответ

1 голос
/ 25 марта 2019

Вы сможете просто сделать это, чтобы предотвратить двойной щелчок:

  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;
 }

Есть связанная ссылка. https://github.com/PrismLibrary/Prism/issues/442

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...