2011-01-12 107 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