Как предотвратить многократное последовательное нажатие клавиши «Ввод» на кнопке - PullRequest
0 голосов
/ 05 октября 2018

У меня есть кнопка. Когда я нажимаю клавишу «Enter» на клавиатуре, команда кнопки выполняется.Когда я последовательно нажимаю клавишу «Ввод», команда также выполняется несколько раз, что мне не нужно.

Я хочу ограничить поведение одним выполнением команды даже при многократном нажатии клавиши «Ввод».Может кто-нибудь помочь?

View.xaml

<Button x:Name="btnSearch" IsDefault="True"  Content="Search"  Command="{Binding SearchButtonCommand}">
      <Button.InputBindings>
          <KeyBinding Command="{Binding Path=SearchButtonCommand}" Key="Return" />
      </Button.InputBindings>
</Button>

ViewModel.cs

public ICommand SearchButtonCommand
{
 get { return new DelegateCommand(SearchButtonExecutionLogic); }
}

1 Ответ

0 голосов
/ 05 октября 2018

Самый простой способ достичь своей цели - ввести и проверить флаг isSearchRunning в реализации вашей команды во ViewModel:

private bool isSearchRunning = false;
private void SearchButtonCommandImpl()
{
    if (isSearchRunning)
    {
        return;
    }
    try
    {
        isSearchRunning = true;
        //Do stuff
    }
    finally
    {
        isSearchRunning = false;
    }
}
...