我有一个组合框,它将ItemsSource设置为一个名为DATA的ObservableCollection属性,通过绑定。 此列表包含大量数据,因此组合框需要一些时间才能完全加载所有项目。
我有一个后台工作程序获取所有信息并在完成后设置ObservableCollection属性DATA。在发生这种情况时,我会显示一个进度指示器,但是,在设置了ObservableCollection DATA之后,UI似乎仍然会挂起很长一段时间,然后组合框将被加载所有项目。
组合框上是否有一个事件让我知道UI中所有项目的正确呈现时间?
由于
答案 0 :(得分:-1)
您可以使用以下代码作为参考,此处进度条和搜索都在同一个线程中运行,Dispatcher用于通知UI:
DoWorkEventHandler workHandler = null;
RunWorkerCompletedEventHandler doneHandler = null;
Action<parameters> actionCompleted = null;
BackgroundWorker worker = new BackgroundWorker();
worker.DoWork += workHandler =
delegate
(
object oDoWrk,
DoWorkEventArgs eWrk
)
{
worker.DoWork -= workHandler;
ServiceProxy service = new ServiceProxy();
service.EventWorkCompleted += actionCompleted =
delegate(<parameters>)
{
service.MethodWorkCompleted -= actionCompleted;
currentDispatcher.BeginInvoke(
new Action<<parameters>>(
OnActionCompleted ), <parameters>);
};
Messenger.Default.Send(
new ShowProgressViewMessage( new ProgressViewModel( "Loading..." ) ) );
service.ServiceMethod();
};
worker.RunWorkerCompleted += doneHandler =
delegate
(
object oDone,
RunWorkerCompletedEventArgs eDone
)
{
Logger.LogVerbose( "Method Called" );
worker.RunWorkerCompleted -= doneHandler;
};
worker.RunWorkerAsync();
private
void OnActionCompleted(<parameters>)
{
}
更新:由于版权问题,只需更改实施,希望您不要介意。