2011-01-12 104 views
0

我有一个组合框,其ItemsSource设置为ObservableCollection属性,名为DATA,通过绑定。 此列表包含大量数据,因此组合框需要一些时间才能完全加载所有项目。组合框项目加载事件WPF?

我有一个后台工作人员获取所有信息,并完成后设置ObservableCollection属性数据。当发生这种情况时,我显示一个进度指示器,但是,在设置了ObservableCollection数据后,用户界面似乎仍然挂起很长一段时间,然后组合框将全部加载。

是否有组合框上的事件让我知道何时所有项目都已在UI中正确呈现?

感谢

回答

-1

您可以使用下面的代码作为参考,这里的进度条和搜索都在同一个线程中运行,与调度员正在被用来notifiy的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>) 
    { 
    } 

更新:只是因为版权问题而改变执行方式,希望你不要介意。

+0

会做..谢谢 – Dan 2011-01-21 20:03:51