DevExpress и SimpleMvvmToolkit - ошибка сериализации
У меня есть DevExpress DxGrid, привязанный к ObservableCollection видов моделей (основанный на SimpleMvvmToolkit). У модели представления есть 2 свойства, представленные самим собой (строка и логическое значение), и несколько других свойств представлены его базовым классом (ViewModelDetailBase), одно из них - модель, стоящая за моделью представления.
Каждый раз, когда я использую сетку для изменения содержимого одного из свойств (например, логическое значение), я получаю сообщение об ошибке "Тип xxx не может быть сериализован.." (xxx - это тип модели), после чего следует предложение используйте DataContractAttribute, чтобы обойти проблему. Я не уверен, как и где искать решение. Может быть, мне стоит прочитать об этом, но зачем здесь сериализация?
Во всяком случае, я надеюсь, что вы можете пролить свет на это. Я был бы признателен за некоторые советы, чтобы заставить меня смотреть в правильном направлении.
редактировать: так как ситуация слишком сложна, чтобы разместить соответствующий код здесь, я сделал проект песочницы, который воспроизводит ошибку. Вы можете найти его по этой ссылке WeTransfer.
С наилучшими пожеланиями, ~ Роб
1 ответ
Благодаря большой помощи сообщества Simple MVVM Toolkit я обнаружил, что решение было простым.
В Simple MVVM Toolkit модель представления должна быть сериализуемой, поскольку она клонируется. Это позволяет легко откатить данные, когда действие отменено. Причина, по которой моя view-модель не может быть клонирована, потому что в ее свойстве "model" отсутствовал конструктор по умолчанию (без параметров).
Нет необходимости украшать модель представления и ее свойства с помощью [DataContract] или [DataMember].
Я надеюсь, что это помогает другим.