Как вы на самом деле реализуете поисковый контракт? (С #)
У меня возникли проблемы с пониманием и получением поискового контракта для работы в моем приложении Магазина. Мне не удалось найти какую-либо документацию или руководство, объясняющее структуру использования контракта. (Я рассмотрел краткие руководства по MSDN, образец контракта на поиск и видеоролик о сборке, но в действительности это касается только JavaScript)
До сих пор я был в состоянии выполнить запрос и получить список (пользовательских объектов) на своей странице контракта на поиск, и оттуда я пытаюсь присвоить его defaultviewmodel.results, но независимо от того, какой запрос я ввожу, ничего не отображается, я на странице. Есть ли что-то еще, что мне нужно установить? То, что я до сих пор, состоит в следующем (выдержки):
App.xaml.cs
protected override void OnSearchActivated(Windows.ApplicationModel.Activation.SearchActivatedEventArgs args)
{
SearchCharmResultsPage.Activate(args.QueryText, args.PreviousExecutionState);
SearchCharmResultsPage.ProcessSearchQuery(args.QueryText);
}
public async static void ProcessSearchQuery(string queryString)
{
try
{
StorageFile file = await ApplicationData.Current.LocalFolder.GetFileAsync("recipeCustomObject Debug.WriteLine("Database exists, connecting");
SQLiteAsyncConnection connection = new SQLiteAsyncConnection("CustomObject_db");
List<CustomObject> resultsList = new List<CustomObject>();
string query = "SELECT * FROM CustomObjectDB";
resultsList = await connection.QueryAsync<RecipeRecord>(query);
}
catch (FileNotFoundException fnfExc)
{
Debug.WriteLine("FNFEXC: " + fnfExc.ToString());
}
}
Я думаю, что, возможно, здесь кроется проблема, хотя я не уверен, если это так, или как это изменить. список результатов создан здесь, но поскольку метод является асинхронным, я не могу вернуться из метода. Из-за этого я думаю, что когда я пытаюсь назначить this.DefaultViewModel[Results] = resultsList;
в LoadStateMethod объект не существует (хотя программа и не выдает ошибку). Когда я пытаюсь добавить ту же строку в ProcessSearchQuery
метод, мне сказали, что this
недопустимо в статическом методе, но я думаю, что метод должен быть статическим? Моя проблема может быть просто фундаментальная логическая ошибка?
3 ответа
Наконец то понял! нашел решение здесь: http://jeffblankenburg.com/2012/11/06/31-days-of-windows-8-day-6-search-contract
Для тех, кто ищет ответ в будущем, ключ должен убедиться, что у вас есть логика поиска в пределах Filter_SelectionChanged
метод, который я не делал. Посмотрите руководство по ссылке выше, чтобы получить представление о структуре.
Вы смотрели образец контракта на поиск в центре разработчиков? Там также есть версия на C#/XAML.
Моя среда с открытым исходным кодом Win8 RSS Reader реализует Search (и Share), посмотрите на источник, и если у вас все еще есть вопросы, я буду рад помочь http://win8rssreader.codeplex.com/