Как вы на самом деле реализуете поисковый контракт? (С #)

У меня возникли проблемы с пониманием и получением поискового контракта для работы в моем приложении Магазина. Мне не удалось найти какую-либо документацию или руководство, объясняющее структуру использования контракта. (Я рассмотрел краткие руководства по 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/

Другие вопросы по тегам