【发布时间】:2012-11-07 06:56:43
【问题描述】:
我在理解和让搜索合同在我的商店应用中工作时遇到了一些问题。我一直找不到任何类型的文档或指南来解释使用合同的结构。 (我查看了 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());
}
}
我认为这可能是问题所在,但我不确定是否是这样,或者如何改变它。
resultsList列表是在这里创建的,但是因为它的方法是异步的,所以我不能从方法中返回。因此,我猜测当我尝试在 LoadStateMethod 中分配 this.DefaultViewModel[Results] = resultsList; 时,该对象不存在(认为程序不会引发错误)。当我尝试在 ProcessSearchQuery 方法中添加同一行时,我被告知 this 在静态方法中无效,但我认为我需要该方法是静态的?我的问题可能只是一个基本的逻辑错误?
【问题讨论】:
标签: c# search windows-8 windows-store-apps