我的應用程序在啓動時使用從數據庫中檢索的數據填充DataGrid。我的字段是:姓名,ID和狀態。前兩個沒有問題,但第三個(狀態)是一個int,可以是1或0,表示有效或無效。DataGrid排序/更新問題
我決定創建一個用戶控件來顯示「狀態」欄。根據「狀態」的值,它只不過是一個變成綠色或紅色的圓圈。控件的默認顏色是紅色。
我還創建了一個列表對象(「數據」),它包含我的信息以及與它的相應的顏色控制。到目前爲止沒有問題。一切正常,如果我快速觀察我的數據對象,所有事情都應該如此。
我的問題是,經過我填充「myDataGrid.ItemsSource =數據的」數據網格,每一個控制「狀態」顯示爲紅色,當他們中的一些應爲綠色。如果我在任何給定時間斷點並快速觀看我的「數據」對象,一切都很好,但DataGrid不會更新。 排序也一樣。如果更改任何控件的顏色,排序任何列後,它會將所有用戶控件的顏色重置爲默認(紅色)。
幾個測試和研究,我覺得現在的問題是,在DataGrid更新自己的項目源端和instanciates,而不是用我的數據對象的那些新的用戶控件後。
有沒有辦法解決這個問題?我已經嘗試了一些我在網絡上發現的解決方案,但迄今爲止沒有任何工作!
我用你的第二recomendation和擺脫從我的目標我的用戶控制的,然後我去細胞通過在該列的小區中以一個更新的狀態控制之一,它的工作原理精細。但是,當我對任何給定的列進行排序時,它會將每個控件重置爲默認填充(紅色)。我知道DataGrid.Sorting事件,但它不起作用。有沒有其他方法可以解決這個問題? 如果有問題,所有列都是隻讀,不知道是否有幫助... 順便說一句,感謝您的回覆! – David 2012-03-13 21:34:15
@David,你是否看到我指定的排序成員路徑模板列?解決你所告訴我的這個問題是令人興奮的。 Datagrid的排序只發生在單元**表示的**數據上,而不是單元**具有或包含**的數據。 'SortMemberPath'專門用於數據網格的排序功能。因爲你沒有使用它,所以排序不會像你期望的那樣發生。 – 2012-03-14 05:15:10
對不起,我遲到了。其實我看到了,但只有在我發表我最後的評論之後:P。我在INotifyPropertyChanged實現方面掙扎了一下,但在解決它之後,我又回到了這裏,幾乎將XAML代碼複製到了我的。它很棒! 非常感謝 – David 2012-03-14 20:15:45