2013-05-29 61 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”的Style元素。

回答

0

看起来这是一个known bug的实例。

我怀疑发生了什么,XamlReader.Load试图将密钥添加到您必须在myStackPanel中定义的已经存在的ResourceDictionary中。有可能你的解决方案没有由Key定义的资源,或者,例如,将资源放在更高级的资源字典中。