我有一個數據網格綁定到一個對象列表。用戶可以在光標所在的位置下方添加一個新行(在代碼中,我創建一個新對象並將其插入到適當位置的列表中)。發生System.Windows.Markup.XamlParseException
試想一下,數據網格具有4行
如果光標被定位在行號4,則該行被添加,但是,如果光標位置在任何其它行的(1,2或3 )然後我得到這個異常:
發生System.Windows.Markup.XamlParseException Message =「根元素丟失。」 源= 「PresentationFramework」 LineNumber上= 0 LinePosition = 0 堆棧跟蹤: 在System.Windows.Markup.XamlReaderHelper.RethrowAsParseException(字符串KeyString中,的Int32 LINENUMBER,的Int32 linePosition,異常的InnerException) 的InnerException信息:System.Xml.XmlException 消息=「根元素丟失」。 源= 「的System.Xml」 LineNumber上= 0 LinePosition = 0 SourceUri = 「」 堆棧跟蹤: 在System.Xml.XmlTextReaderImpl.Throw(例外五) 在System.Xml.XmlTextReaderImpl.ParseDocumentContent() 在System.Windows.Markup.XmlCompatibilityReader.Read() 在System.Windows.Markup.XamlReaderHelper.Read(xamlNode & xamlNode) 的InnerException:
注意:當應用程序第一次加載,如果我第一次添加行(由在最後一行),那麼我也可以從任何其他行添加一行。但是,如果我第一次嘗試從行號1,2,3添加一行,那麼它會失敗!
任何幫助將不勝感激。我完全迷失了。我懷疑任何人都經歷了這一點,但也許你知道什麼可以導致這或我怎麼能調試它,因爲我不知道從哪裏開始:(
private void OnAddRowBelowCursor(DataGrid datagrid)
{
try
{
int index = datagrid.SelectedIndex;
MyObject newObj = new MyObject();
ObjectList.Insert(index + 1, newObj);
Logging.log.Info("Appended object row below the cursor...");
}
catch (Exception ex)
{
Logging.log.Error("Error appending row below cursor. Reason: " + ex.ToString());
}
}
private void OnAppendRowToBottom()
{
try
{
MyObject newObj = new MyObject();
ObjectList.Add(newObj);
Logging.log.Info("Appended object row to bottom...");
}
catch (Exception ex)
{
Logging.log.Error("Error appending row to the bottom of the table. Reason: " + ex.ToString());
}
}
我還注意到,加入行底部不會失敗
感謝
嗨皮奧特,如果我加載的數據格式不正確,爲什麼它會工作一段時間,而不是其他人?謝謝 – okidoki 2011-03-11 15:14:16
如何爲DataGrid設置AllowUserToInsertRow屬性? (或類似的東西)。也許最後一行索引是「新行」,它有不同的處理方式。 – 2011-03-11 15:26:47
我已將此設置爲false CanUserAddRows =「False」 – okidoki 2011-03-17 14:52:43