Произошла исключительная ситуация System.Windows.Markup.XamlParseException - PullRequest
0 голосов
/ 11 марта 2011

У меня есть сетка данных, связанная со списком объектов. Пользователи могут добавить новую строку ниже, где находится курсор (в коде я создаю новый объект и вставляю его в список в подходящей позиции).

Представьте, что сетка данных имеет 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 голосов
/ 18 марта 2011

Я использовал RTB из расширенной библиотеки с XAMLFormatter.

При создании новой строки я не преобразовывал свою пустую строку в fortmat XAML.Почему происходит сбой, только когда я добавлял его под курсором, а не в конце, я до сих пор не знаю.Но это исправлено

0 голосов
/ 11 марта 2011

Похоже, данные, которые вы загружаете, плохо отформатированы.Я могу предложить вам такое решение, которое позволит вам разобрать любой источник XML или HTML , даже если он не прошел проверку

...