2011-10-24 19 views
0

ドロップダウンチェックボックスと大量のデータを持ついくつかの異なるテンプレート列を持つデータグリッドがあります。ここでの問題は、セルを無効にするプロパティを設定し、そのプロパティでRaisePropertyChangeを実行することです。私は下にスクロールし、下にデータを読み込むときにのみ更新されます。だから私はメッセージを送信し、グリッド内のアイテムを更新することを決めた。WPF DataGridは、リフレッシュ時にUIをハングします

次のコードは、メッセージを受信するときにグリッドをリフレッシュするためのコードです。

void RefreshGrid(RefreshGridMessage msg) 
    { 
     switch (msg.MsgType) 
     { 
      case RefreshGridMessage.MessageType.ExportChanged: 

       this.Dispatcher.Invoke 
        (
        new RefreshDelegate(
         delegate 
         { 
          myGrid.Visibility = Visibility.Collapsed; 
          myGrid.Items.Refresh(); 
          myGrid.Visibility = Visibility.Visible; 
         } 
        ), 
        null 
        ); 
       break; 
     } 
    } 

ここで問題となるのは数秒間UIをハングアップしてから、完全に動作し、結果が得られます。

ここで問題になるのは、この垂れ下がりを止めてスムーズに動作させる方法ですか?

答えて

1

UIスレッド以外のスレッドからデータをリフレッシュしていますか?その期間にUIをsupsendしたくない場合は、Invokeの代わりにBeginInvokeを使用してDispatcherにキューを入れてください。 リフレッシュデリゲートはasynchronouslyと呼ばれ、UIはその期間中応答し続けます。

+0

申し訳ありませんが、役に立たなかったです。それはまだぶら下がっている。はい、私は別のスレッドからそれをリフレッシュしています。 –

関連する問題