2013-05-29 3 views
0

Я пытаюсь сериализации/десериализации некоторые Xaml используя этот простой код:Исключение попытке десериализации Xaml

object clone; 
using (var stream = new MemoryStream()) 
{ 
    System.Windows.Markup.XamlWriter.Save(myStackPanel, stream); 
    stream.Seek(0, SeekOrigin.Begin); 
    clone = System.Windows.Markup.XamlReader.Load(stream); 
} 

Фактическая Xaml хороша тем, что она уже была оказана UI. Когда я пытаюсь десериализовать отлично действующий StackPanel, он выдает исключение XamlParseException:

«Добавить значение в словарь типа« System.Windows.ResourceDictionary », сделало исключение».

Сообщение внутреннего исключения:

«Элемент уже добавлен ключ в словаре.„Поле“Ключ добавляется:" Поле»

Когда я анализирую сериализированную Xaml, нет дублирующего ресурса; существует один элемент стиля с x: Key = "Field".

ответ

0

Похоже, что это пример known bug.

Я подозреваю, что происходит то, что XamlReader.Load пытается добавить ключ в уже существующий ResourceDictionary, который вы должны определять в myStackPanel. Возможно, у вас может быть работа, в которой не было ресурсов, определенных Key или, например, помещали ресурсы в какой-то более высокоуровневый словарь ресурсов.

Смежные вопросы