2010-05-24 66 views
0

我一直在使用WPF中的DataGrid,結果很好。但是,經過一些改變後,它現在給了我意想不到的結果。我有一個DataGrid在頁面上。 DataContext被設置爲List對象,該對象是從同一個WPF項目中存在的類創建的。空排在DataGrid的底部,添加新記錄,可見Datagrid結果沒有意義

AFTER:同一頁上,同樣DataGrid。但是現在List對象來自同一解決方案中的類庫項目。 EXACT相同的代碼,但它現在已被提取到類庫中。數據網格底部的空行,添加新記錄不是可見。

WTF?

+0

我仍然在尋找這個問題的答案。同樣,班級或用戶界面本身沒有任何變化。我的VS解決方案擁有一個包含UI和類的項目。現在我有兩個項目(原始的WPF和新的類庫),類中的代碼相同,但該類現在位於類庫項目中。最終結果根本沒有意義。 – 2010-06-04 00:00:25

回答

0

也許這是一些安全問題,甚至是錯誤我剛纔讀this:。

我發現,如果你以前訪問的ListCollectionView的 CanAddRow一次 您可以使用神奇的CanUser集合, DataGrid的 的AddRows成爲true。奇怪!

IEditableCollectionView ecv = new ListCollectionView(myRecordCache); 
bool b = ecv.CanAddNew; // dummy access 
MyGrid.DataContext = ecv; 
+0

我明白你在說什麼,但是我沒有以任何不同的方式設置DataContext。再一次,改變的* only *事物是產生對象列表的類的位置。 – 2010-06-04 15:55:08

+0

我給你的觀點是因爲你一貫的幫助。謝謝。 – 2010-06-04 16:21:39

0

它是什麼樣的列表?它的公開可見的接口允許添加項目,或者它是隻讀列表現在(例如IEnumerable,ICollection?

+0

它只是一個System.Collection.Generic List,沒什麼特別的。該列表本身由自定義對象組成。代碼本身並沒有改變,它只是從WPF項目中變成了一個類庫項目 – 2010-05-24 20:02:50

+0

這不應該僅僅通過將你所綁定的屬性的類移動到不同的程序集來實現,其他的東西一定會改變它。 – bitbonk 2010-05-25 04:26:34

+0

這確實是一個奇怪的部分 - 沒有其他改變。我簡直就是在解決方案中的兩個項目之間拖放,將其從WPF項目中刪除,然後將引用更改爲新的類庫,就是這樣。它只是沒有意義。 – 2010-06-03 23:56:47

0

當我設置DataGrid屬性IsReadOnly =「True」時,我遇到了同樣的問題檢查是否有相同的設置並嘗試刪除它,看看會發生什麼

+0

它是一個很好的建議,我試過了,但我得到了相同的(不需要的)結果。同樣,UI端沒有任何改變,唯一的區別是DataContext列表對象來自哪裏。 – 2010-05-24 20:57:32

4

我想,我終於有了答案。基本上,我錯了,我確實改變了班裏的一小部分。當我讀到這個答案時,「燈泡」繼續:How do I create a new row in WPF DataGrid when it is bound to an XmlDataProvider?

底線:您綁定的類需要具有默認構造函數才能顯示可編輯的行!

在我的代碼中,我確實改變了構造函數(我完全忘記了這個),它沒有默認值。將默認構造函數添加回類修復了問題。