发生了System.Windows.Markup.XamlParseException

时间:2011-03-11 13:51:30

标签: datagrid xamlparseexception

我有一个绑定到对象列表的数据网格。用户可以在光标所在的位置下方添加一个新行(在代码中我创建一个新对象并将其插入到适当位置的列表中)。

想象一下,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());
        }
    }

我还注意到在底部添加一行不会失败

由于

2 个答案:

答案 0 :(得分:0)

看起来您正在加载的数据格式错误。我可能会建议你这样一个解决方案,即使验证失败也可以parse any XML or HTML source

答案 1 :(得分:0)

我正在使用扩展库中的RTB和XAMLFormatter。

创建新行时,我没有将空字符串转换为XAML fortmat。为什么只有当我在光标下方添加它而不是在最后时才会失败,我仍然不知道。但它是固定的