2011-06-25 69 views
0

我已經在擴展數據網格下面的代碼來選擇或取消選擇CheckBoxColumn:如何在代碼中綁定WPF DataGrid中的數據?

  if (this.Columns[c] is DataGridCheckBoxColumn) 
      { 
       CheckBox cb = this.GetCellCtrl<CheckBox>(this.Columns[fromCol], topRow); 
       for (int r = fromRow + 1; r <= toRow; r++) 
       { 
        CheckBox tt = this.GetCellCtrl<CheckBox>(this.Columns[fromCol], this.GetRow(r)); 
        if (tt != null) 
         tt.IsChecked = cb.IsChecked; 
       } 
      } 

的問題是,該複選框被選中(或沒有),但不更新基礎數據。如果我用鼠標點擊複選框,它會起作用。那麼,我的代碼和鼠標點擊之間有什麼區別?如何解決我的問題?

回答

1

在本地設置值將刪除將您的CheckBox耦合到您的數據的綁定。是否有任何理由通過UI更新數據的狀態?爲什麼不在數據上使用相同的循環邏輯?

如果你真的必須這樣做,你應該看看UI自動化:

http://msdn.microsoft.com/en-us/library/ms747327.aspx

+0

非常感謝您的回覆。我不在尋找UI自動化。我只是試圖創建一個通用函數,使所選單元格可以獨立於基礎數據源進行檢查 - 如果它是DataGridCheckBoxColum,綁定數據必須是bool類型。我實際上嘗試模擬鼠標點擊CheckBoxes。在我的測試中,綁定似乎沒有解耦,因爲我仍然可以點擊它並且底層數據反映了這種變化。 – newman

+0

你說過「在本地設置值將刪除綁定」 - 這是如何工作的?我如何重新建立綁定? – newman