在我的C# WPF应用程序中,我有一个DataGrid,并且在它的正上方有一个TextBox供用户搜索和过滤表格。如果用户输入速度很快,那么在他们键入后2秒钟内不会出现任何文本,因为UI线程太忙于更新表格。
由于大部分延迟都在UI端(即过滤数据源几乎是瞬间完成的,但重新绑定和重新渲染表格很慢),多线程并没有帮助。然后我尝试将仅表格的调度程序设置为较低级别,同时更新表格,但这也没有解决问题。以下是一些代码...有没有解决这种问题的建议?
由于大部分延迟都在UI端(即过滤数据源几乎是瞬间完成的,但重新绑定和重新渲染表格很慢),多线程并没有帮助。然后我尝试将仅表格的调度程序设置为较低级别,同时更新表格,但这也没有解决问题。以下是一些代码...有没有解决这种问题的建议?
string strSearchQuery = txtFindCompany.Text.Trim();
this.dgCompanies.Dispatcher.BeginInvoke(DispatcherPriority.ApplicationIdle, new Action(delegate
{
//filter data source, then
dgCompanies.ItemsSource = oFilteredCompanies;
}));
CollectionView
来解决此问题。 - Federico Berasategui