0

我有一个 DevExpress DxGrid 绑定到视图模型的 ObservableCollection(基于 SimpleMvvmToolkit)。视图模型有 2 个自身公开的属性(字符串和布尔值),其他一些属性由其基类 (ViewModelDetailBase) 公开,其中之一是视图模型背后的模型。

每次我使用网格修改属性之一的内容(例如布尔值)时,我都会收到一条错误消息“无法序列化类型 xxx..”(xxx 是模型的类型),然后是建议使用 DataContractAttribute 来规避问题。我不确定如何以及在哪里寻找解决方案。也许我应该阅读它,但为什么这里需要序列化?

无论如何,我希望你能对此有所了解。我很感激一些指示,让我朝着正确的方向前进。

编辑:由于情况太复杂,无法在此处发布相关代码,因此我制作了一个重现错误的沙箱项目。您可以通过这个 WeTransfer 链接找到它。

最好的问候,~Rob

4

1 回答 1

0

感谢 Simple MVVM Toolkit 社区的大力帮助,我发现解决方案很简单。

在 Simple MVVM Toolkit 中,视图模型需要可序列化,因为它会被克隆。这是为了在取消操作时轻松回滚数据。无法克隆我的视图模型的原因是因为它的“模型”属性缺少默认(无参数)构造函数。

无需使用[DataContract][DataMember]装饰视图模型及其属性。

我希望这对其他人有帮助。

于 2013-07-30T09:09:54.347 回答