c# - 您如何实际实现搜索契约(Contract)? (C#)

标签 c# search windows-8 windows-store-apps

我在理解和让搜索契约(Contract)在我的商店应用程序中工作时遇到了一些麻烦。我一直找不到任何类型的文档或指南来解释使用契约(Contract)的结构。 (我看过 MSDN 上的快速入门、搜索契约(Contract)示例和构建视频,但它们只真正处理 javascript)

到目前为止,我已经能够运行查询并在我的搜索契约(Contract)页面中获取(自定义对象)列表,然后我尝试从那里将其分配给 defaultviewmodel.results,但无论我输入什么查询在页面上显示 I。还有什么我需要设置的吗? 目前我的情况如下(节选):

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 在静态方法中无效,但我认为我需要该方法静止的?我的问题可能只是一个基本的逻辑错误?

最佳答案

终于明白了!在这里找到解决方案:http://jeffblankenburg.com/2012/11/06/31-days-of-windows-8-day-6-search-contract

对于那些在未来寻找答案的人来说,关键是要确保您在 Filter_SelectionChanged 方法中有您的搜索逻辑,这是我没有做的事情。查看上述链接中的指南以了解结构。

关于c# - 您如何实际实现搜索契约(Contract)? (C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13195477/

相关文章:

c# - Process.Start 参数不起作用

mysql - 如何处理 "questions that may already have your answer"?

c# - 在 Windows 8 上获取操作系统、平台和设备信息

c# - access vba 中的 .net5 com 库

c# - 将列表转换为字典并使用 linq 求和值

php - Bing 搜索 API 限制并限制为每个域单个页面

windows-8 - 如何通过任务计划程序在启动时运行 WinRT 应用程序?

c++ - 如何订阅 C++/CX 中的 Windows 运行时组件内引发的事件?

c# - 如何指定 T 是从其他接口(interface)继承的。通用比较器

PHP MySQL 搜索查询 - 如何在搜索 "my search"时找到类似 "mysearch"的结果?