ストアアプリで検索コントラクトを理解して機能させるのに問題があります。契約の使用構造を説明するドキュメントやガイドを見つけることができませんでした。(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());
}
}
問題があるかどうか、またはどのように変更するかはわかりませんが、ここに問題がある可能性があると思います。resultListリストはここに作成されますが、メソッドが非同期であるため、メソッドから戻ることができません。このため、LoadStateMethodで割り当てようとするとthis.DefaultViewModel[Results] = resultsList;
、オブジェクトは存在しないと思います(プログラムはエラーをスローしないと考えられます)。メソッドに同じ行を追加しようとすると、静的メソッドでは無効であるProcessSearchQuery
と言われthis
ますが、メソッドを静的にする必要があると思いますか?私の問題は基本的な論理エラーかもしれませんか?