我正在尝试利用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确认搜索的指针?
答案 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暂时无法正常工作,或者我做错了,但是我会对此提出另一个问题。