1

我正在为 Windows 8 实现一个应用程序。它将从 xml 中搜索大量数据。

所以现在我使用文本框和列表视图来显示搜索结果,但是当我使用文本框事件时,TextChanged 会减慢输入速度,因为它会为输入的每个字母执行新搜索。

所以问题是,如何在地铁/现代用户界面中进行延迟,在输入几个字母后触发事件,而不是一个。

4

3 回答 3

2

不鼓励您将任何可能使 UI 陷入困境的同步任务运行。尝试将其作为后台任务运行,该任务会在完成时更新 UI。有关详细信息,请参阅后台任务TimeTrigger。在任务完成时,使用Core Dispatcher 更新 UI。 核心调度程序示例

于 2012-09-10T14:47:53.093 回答
0

为什么不使用“离开”事件而不是文本框的文本更改事件?当用户在文本框中完成输入时,它会变得更流畅。

于 2012-09-10T14:35:52.597 回答
0

您不应创建自己的搜索体验。您应该挂接到 SearchPane 并在那里处理它。

SearchPane searchPane = SearchPane.GetForCurrentView();
searchPane.QuerySubmitted += searchPane_QuerySubmitted;
searchPane.SuggestionsRequested += searchPane_SuggestionsRequested;

然后,您可以在处理程序中根据需要处理事件。如果您正在提供建议,并且您的进程运行缓慢,并且会通过异步方式运行,那么您一定会得到延期。

void searchPane_SuggestionsRequested(SearchPane sender, SearchPaneSuggestionsRequestedEventArgs args)
{
    var deferral = args.Request.GetDeferral();
    // do real time type ahead here
    deferral.Complete();
}

void searchPane_QuerySubmitted(SearchPane sender, SearchPaneQuerySubmittedEventArgs args)
{
    // complete search here
}
于 2012-09-10T15:10:08.087 回答