Передача поискового термина из SearchHandler в ContentPage в формах Xamarin 4 - PullRequest
0 голосов
/ 26 декабря 2018

Я пытаюсь использовать новый SearchHandler, реализованный как часть Xamarin Forms 4. До сих пор мне было довольно легко получать предложения, но теперь я хочу вызвать событие или следовать предложенному методу:обработка, когда поиск подтвержден.

public class FoodSearchHandler: SearchHandler
{
    IFoodDataStore dataStore = new FoodDataStore();

    protected override void OnQueryConfirmed()
    {
        base.OnQueryConfirmed();
        // What to do here?
    }

    protected override void OnQueryChanged(string oldValue, string newValue)
    {
        base.OnQueryChanged(oldValue, newValue);

        if(!string.IsNullOrWhiteSpace(newValue)
        {
            // Populate suggestions
            ItemsSource = dataStore.GetSuggestions(newValue);
        }
        else
        {
            ItemsSource = null;
        } 
    }
}

public partial class FoodsPage : ContentPage
{
    ObservableCollection<Food> Foods = new ObservableCollection<Food>();

    public ItemsPage()
    {
        InitializeComponent();

        // Wire up the search handler
        Shell.SetSearchHandler(this, new FoodSearchHandler());
        BindingContext = this;
    }
}

К сожалению, хотя в альфа-документах упоминается обработчик поиска, они не содержат никаких сведений о том, как его использовать, а примеры приложений демонстрируют только заполнение предложений.

Есть ли у кого-нибудь указатель на то, как мне следует уведомлять мою ContentPage о том, что мой SearchHandler подтвердил поиск?

1 Ответ

0 голосов
/ 06 января 2019

Итак, после прочтения документации по Shell, мне кажется, что в этой ситуации мне хотелось бы использовать новую Navigation и перейти к маршруту, пропускающему текст поиска, например, как запрос.:

protected override void OnQueryConfirmed()
{
    base.OnQueryConfirmed();

    var shell = Application.Current.MainPage as Shell;
    shell.GoToAsync($"app:///fructika/search?query={Query}", true);
}

NB Не похоже, что передача данных работает прямо сейчас или, если это так, я делаю это неправильно, но я подниму отдельный вопрос об этом.

...