0

我正在尝试使用以下简单代码序列化/反序列化一些 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'类型的字典添加值引发异常。”

内部异常消息是:

“项目已添加。字典中的键:'Field' 正在添加的键:'Field'”

当我检查序列化的 Xaml 时,没有重复的资源;有一个带有 x:Key="Field" 的 Style 元素。

4

1 回答 1

0

看起来这是一个已知错误的实例。

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

于 2013-05-30T20:01:19.233 回答