我有一个使用MVVM模式的WPF应用程序。启动窗口包含3个控件Menu
,TitleBar
和DataGrid
。目前,完成所有操作(从服务获取数据,动态生成DataGrid
及其渲染)大约需要5秒钟,之后它会突然显示给UI。问题是,最终用户在启动程序后必须等待5秒才能看到窗口。大多数操作都与DataGrid
有关。所以我将DataGrid
相关代码移动到Window Loaded
事件,现在窗口突然打开但显示黑屏,一段时间后它显示DataGrid数据。
所以我的目标是显示带有Menu
和TitleBar
的窗口,在完成初始加载后,执行任务以在后台线程中加载DataGrid
以便我可以显示视图中的加载面板。如何在完成初始加载后调用与DataGrid
相关的特定方法?
另外,我不能使用Splash屏幕(这是在要求中)。
请建议?
答案 0 :(得分:5)
您应该在后台执行任何长时间运行的过程Thread
...这将释放您的用户界面。如果您不熟悉多线程应用程序,请查看MSDN上的BackgroundWorker Class页面,因为它包含代码示例。
另外需要注意的是,您应该在IsAsync="True"
上的Binding
声明中添加DataGrid.ItemsSource
属性,让它知道它必须等待数据。这样,您的DataGrid
将显示为空,然后当数据准备就绪时,它将填充。