我正在尝试使用这个简单的代码序列化/反序列化一些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 :(得分:0)
看起来这是known bug的实例。
我怀疑正在发生的事情是XamlReader.Load正在尝试将密钥添加到您必须在myStackPanel中定义的已存在的ResourceDictionary中。您可能有一个没有Key定义的资源的解决方法,或者,例如,将资源放在一些更高级的资源字典中。