DevExpress и SimpleMvvmToolkit - ошибка сериализации

У меня есть DevExpress DxGrid, привязанный к ObservableCollection видов моделей (основанный на SimpleMvvmToolkit). У модели представления есть 2 свойства, представленные самим собой (строка и логическое значение), и несколько других свойств представлены его базовым классом (ViewModelDetailBase), одно из них - модель, стоящая за моделью представления.

Каждый раз, когда я использую сетку для изменения содержимого одного из свойств (например, логическое значение), я получаю сообщение об ошибке "Тип xxx не может быть сериализован.." (xxx - это тип модели), после чего следует предложение используйте DataContractAttribute, чтобы обойти проблему. Я не уверен, как и где искать решение. Может быть, мне стоит прочитать об этом, но зачем здесь сериализация?

Во всяком случае, я надеюсь, что вы можете пролить свет на это. Я был бы признателен за некоторые советы, чтобы заставить меня смотреть в правильном направлении.

редактировать: так как ситуация слишком сложна, чтобы разместить соответствующий код здесь, я сделал проект песочницы, который воспроизводит ошибку. Вы можете найти его по этой ссылке WeTransfer.

С наилучшими пожеланиями, ~ Роб

1 ответ

Решение

Благодаря большой помощи сообщества Simple MVVM Toolkit я обнаружил, что решение было простым.

В Simple MVVM Toolkit модель представления должна быть сериализуемой, поскольку она клонируется. Это позволяет легко откатить данные, когда действие отменено. Причина, по которой моя view-модель не может быть клонирована, потому что в ее свойстве "model" отсутствовал конструктор по умолчанию (без параметров).

Нет необходимости украшать модель представления и ее свойства с помощью [DataContract] или [DataMember].

Я надеюсь, что это помогает другим.

Другие вопросы по тегам