SearchBar автоматически расфокусируется после использования события TextChanged в Xamarin Forms

У меня есть простой компонент панели поиска и его событие TextChanged

   <SearchBar x:Name="SearchBar" Placeholder="Search words..."
                                       CancelButtonColor="Black"
                                       TextColor="Black"
                                       PlaceholderColor="Black"
                                        BackgroundColor="Transparent"
                                       FontSize="Medium"
                               
                                       TextChanged="SearchBar_TextChanged"
                                      />

В SearchBar_TextChanged() методе я пытаюсь найти данные по тексту и назначить их источнику элемента. Все работает нормально, но проблема в том, что панель поиска теряет фокус после фильтра.

  private async void SearchBar_TextChanged(object sender, TextChangedEventArgs e)
        {
            if (string.IsNullOrWhiteSpace(e.NewTextValue))
                words.ItemsSource = await wordRepository.GetAllAsync();
            else
                words.ItemsSource = await wordRepository.Find(x => x.Name.ToLower().Contains(e.NewTextValue.ToLower()));
        }

person Fatikhan Gasimov    schedule 15.08.2020    source источник


Ответы (1)


Вы можете попытаться настроить фокус панели поиска вручную.

 private async void SearchBar_TextChanged(object sender, TextChangedEventArgs e)
    {
        if (string.IsNullOrWhiteSpace(e.NewTextValue)){
            words.ItemsSource = await wordRepository.GetAllAsync();
        }else{
            words.ItemsSource = await wordRepository.Find(x => x.Name.ToLower().Contains(e.NewTextValue.ToLower()));
        }
        SearchBar.Focus();
    }
person Leo Zhu - MSFT    schedule 17.08.2020
comment
Я не мог воспроизвести проблему из-за отсутствия сбора и фильтрации данных, панель поиска все еще фокусируется, когда я обрабатываю mryhod SearchBar_TextChanged. - person Leo Zhu - MSFT; 18.08.2020