2011-10-24 67 views
0

我有一個數據網格有幾件事情,它有下拉式複選框和幾個不同的模板列,它也有大量的數據。這裏的問題是我設置了禁用單元格的屬性,並且對該屬性進行了RaisePropertyChange。只有當我向下滾動並加載下面的數據時才更新它。所以我決定發送消息並刷新網格中的項目。WPF DataGrid在刷新時掛起用戶界面

以下代碼用於在收到消息時刷新網格。

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; 
     } 
    } 

這裏的問題是它掛斷用戶界面幾秒鐘,然後它完美的工作,我會得到我需要的結果。

這裏的問題是否有任何方法可以阻止這種掛起並使其順利工作?

回答

1

您是否刷新除UI線程以外的其他線程的數據。如果您不希望您的用戶界面在該時間段內超時,請使用BeginInvoke而不是Invoke將其排列在分派器上。 刷新委託將被稱爲asynchronously,並且您的用戶界面將在該時間段內保持響應。

+0

對不起,但它沒有幫助。它仍然掛着。是的,我從另一個線程刷新它。 –