我有一个绑定到对象列表的数据网格。用户可以在光标所在的位置下方添加一个新行(在代码中我创建一个新对象并将其插入到适当位置的列表中)。
想象一下,datagrid有4行
如果光标位于第4行,则会添加该行,但是,如果光标位于任何其他行(1,2或3)中,则会出现此异常:
发生了System.Windows.Markup.XamlParseException Message =“缺少根元素。” 来源= “PresentationFramework” LineNumber上= 0 LinePosition = 0 堆栈跟踪: 在System.Windows.Markup.XamlReaderHelper.RethrowAsParseException(String keyString,Int32 lineNumber,Int32 linePosition,Exception innerException) InnerException:System.Xml.XmlException Message =“缺少根元素。” 来源= “的System.Xml” LineNumber上= 0 LinePosition = 0 SourceUri = “” 堆栈跟踪: 在System.Xml.XmlTextReaderImpl.Throw(例外e) 在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 :(得分:0)
看起来您正在加载的数据格式错误。我可能会建议你这样一个解决方案,即使验证失败也可以parse any XML or HTML source
答案 1 :(得分:0)
我正在使用扩展库中的RTB和XAMLFormatter。
创建新行时,我没有将空字符串转换为XAML fortmat。为什么只有当我在光标下方添加它而不是在最后时才会失败,我仍然不知道。但它是固定的