2011-03-11 55 views
0

我有一個數據網格綁定到一個對象列表。用戶可以在光標所在的位置下方添加一個新行(在代碼中,我創建一個新對象並將其插入到適當位置的列表中)。發生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()); 
     } 
    } 

我還注意到,加入行底部不會失敗

感謝

回答

0

我正在使用前者的RTB一個帶有XAMLFormatter的圖書館。

創建新行時,我沒有將空字符串轉換爲XAML fortmat。爲什麼只有當我將它添加到光標下而不是最後時,我仍然不知道。但它是固定的

0

看起來像你的加載格式錯誤的數據。我可以sugest你這樣的解決方案,這將讓你parse any XML or HTML source即使它的失敗驗證

+0

嗨皮奧特,如果我加載的數據格式不正確,爲什麼它會工作一段時間,而不是其他人?謝謝 – okidoki 2011-03-11 15:14:16

+0

如何爲DataGrid設置AllowUserToInsertRow屬性? (或類似的東西)。也許最後一行索引是「新行」,它有不同的處理方式。 – 2011-03-11 15:26:47

+0

我已將此設置爲false CanUserAddRows =「False」 – okidoki 2011-03-17 14:52:43

相關問題