【问题标题】:Exception when serializing WPF contols序列化 WPF 控件时出现异常
【发布时间】:2009-05-07 00:38:09
【问题描述】:

我有一个应用程序(约会管理器),它允许用户在每次单击按钮时在堆栈面板中创建用户控件,并且用户可以将数据输入到用户控件中。到目前为止一切顺利。

我使用 XamlWriter.Save() 序列化了堆栈面板。但是,当我下次尝试以 XamlReader.Load() 启动应用程序时再次加载它时,出现以下异常:

"System.Windows.Markup.XamlParseException: 无法设置名称属性值 元素“边框”上的“边框1”。 “边框”在元素范围内 '项目',它已经有一个名字 在定义时注册 另一个范围。第 4 行位置 '43'。”

我在 google 中找到了一种解决方法,涉及删除似乎对我没有用的所有控件名称。

现在您可能会问,为什么您必须使用 Xml-Serialisation。问题是,我们必须为我们的 xml 课程创建一个科学项目,其中至少必须使用 xml-serialisation 和 xslt,所以我认为这将是一个好主意:(

【问题讨论】:

    标签: wpf xaml xslt serialization xml-serialization


    【解决方案1】:

    我给你的一条建议是不要序列化 ​​UI,而是序列化底层数据。

    例如,创建一个名为 Data 的类,它表示存储在用户控件中的数据。确保这个类用 [Serializable] 属性装饰。使用 wpf 的数据绑定功能来管理数据对象的 CRUD 操作。此时,您可以使用 XmlSerializer 序列化和反序列化您的数据对象。反序列化时,将用户控件绑定到数据对象即可。

    希望我有时间写一个快速示例。

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-09
      • 1970-01-01
      • 1970-01-01
      • 2013-12-12
      • 1970-01-01
      相关资源
      最近更新 更多