2011-01-12 4 views
0

私は、バインディングを介してDATAというObservableCollectionプロパティにItemsSourceを設定したコンボボックスを持っています。 このリストには膨大なデータが含まれているため、コンボボックスがすべてのアイテムを完全にロードするのに時間がかかります。ComboBoxアイテムがイベントwpfをロードしましたか?

私はすべての情報を取得し、完了したらObservableCollectionプロパティDATAを設定するバックグラウンドワーカーを持っています。これが起こっている間、私は進捗インジケータを表示しますが、ObservableCollectionデータを設定した後、UIはまだしばらくハングしているように見え、コンボボックスが読み込まれるとすべてのアイテムになります。

UIにすべてのアイテムが正しくレンダリングされたことを知らせるイベントがコンボボックスにありますか?

おかげ

答えて

-1

あなたは参考に次のコードを使用し、ここでプログレスバーとの両方が同じスレッドで実行されている、とDispatcherはUIをnotifiyするために使用されている検索することができます。

 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

関連する問題