以下问题:
我想在程序中上传文件,用户应该可以进行设置。 因为文件非常大,我想将它们加载到新线程中,以便用户可以在GUI中进行其他设置。 (速度:快)
到目前为止一切顺利,第一步到第三步没有问题。
但是在第4步中,我创建了Dispatcher.Invoke。
private void SetNewContent(object newContent)
{
_userControl.Dispatcher.Invoke(
DispatcherPriority.Normal,
new System.Action(
delegate()
{
_userControl.SetContent(newContent);
}
)
};
}
方法_userControl.SetContent很慢。对于10,000个页面,该方法大约需要5秒,这对于用户来说太长了。在此期间,用户无法更改GUI设置。
是否有可能阻止它?
答案 0 :(得分:0)
您不应该一次呈现所有内容。仅显示可见内容 如果“newContent”是一个集合(或者可以包装到集合中),您可以通过“ItemsSource”属性将它绑定到任何WPF列表控件 - 它们是虚拟的,因此它们只渲染可见的项目。
答案 1 :(得分:0)
我们遇到了类似的问题,我们使用的Grid控件的“虚拟化”模式没有。在虚拟模式下,它只会为可见部分构建UI元素,并在您滚动时重新使用它(而不是一次性构建所有10,000个元素)
什么是控件(哪个供应商?即Infragistics / Telerik / DevExpress)用于显示日期?检查它是否支持虚拟化,现在大多数都支持虚拟化。