この単純なコードを使用して、いくつかの 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 要素があります。