尝试反序列化Xaml的异常

时间:2013-05-29 23:35:24

标签: wpf xaml serialization

我正在尝试使用这个简单的代码序列化/反序列化一些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”。

1 个答案:

答案 0 :(得分:0)

看起来这是known bug的实例。

我怀疑正在发生的事情是XamlReader.Load正在尝试将密钥添加到您必须在myStackPanel中定义的已存在的ResourceDictionary中。您可能有一个没有Key定义的资源的解决方法,或者,例如,将资源放在一些更高级的资源字典中。