2012-04-27 66 views
0

我有一個虛擬化的DataGrid打開。我有DataGrid中的單元格的IsSelected屬性綁定到我的模型。在大多數情況下,綁定起作用(這意味着如果我單擊了當前顯示在屏幕上的單元格,它可以正常工作)。但是,如果我使用「全選」按鈕或者在有很多行時使用鍵盤(CTRL + SHIFT + DOWN)......它似乎錯過了一些數據。 IsSelected屬性不會被設置。DataGrid選擇缺失項目

我的直覺告訴我這是虛擬化,但我不能關閉虛擬化,因爲它太慢了。

任何想法?

回答

0

你是對的,因爲它不起作用的原因是虛擬化。

要使其正常工作,您必須使用DataGrid.SelectedCellsChanged事件手動同步DataGrid.SelectedCells和所選單元模型的集合。

+0

讓我開始的代碼示例?我不太瞭解如何「手動同步」 – KrisTrip 2012-04-30 13:48:04

+0

您可以首先解釋如何將DataGridCell.IsSelected綁定到您的模型?我在問,因爲DataGridCell的DataContext是來自模型集合的單個項目,它綁定到DataGrid.SelectedItems,而不是單個項目的屬性值。你是否可以將DataGridCell.IsSelected綁定到「DataGridRowViewModel」.IsSelected屬性? – Stipo 2012-04-30 16:23:44

+0

我的問題有一個錯誤。它應該「綁定到DataGrid.ItemsSource」,而不是「綁定到DataGrid.SelectedItems」。 – Stipo 2012-05-01 14:29:52