以Xamarin Forms 4

时间:2018-12-25 21:56:27

标签: xamarin.forms xamarin-forms-4

我正在尝试利用Xamarin Forms 4的一部分实现的新SearchHandler。到目前为止,我发现很容易获得建议,但是现在我想引发一个事件,或者遵循建议的方法确认搜索时进行处理。

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

不幸的是,尽管alpha docs提到了搜索处理程序,但它们并未包含有关如何使用它的任何详细信息,而示例应用程序仅演示了如何填充建议。

外面有没有人可以提供有关我应该如何通知ContentPage我的SearchHandler确认搜索的指针?

1 个答案:

答案 0 :(得分:0)

因此,在阅读了更多Shell文档之后,在这种情况下,我想做的就是使用Shell的新Navigation并导航到将搜索文本作为查询传递的路线,例如:< / p>

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

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

看来passing data暂时无法正常工作,或者我做错了,但是我会对此提出另一个问题。