0

ビューモデルの ObservableCollection にバインドされた DevExpress DxGrid があります (SimpleMvvmToolkit に基づく)。ビューモデルには、それ自体によって公開される 2 つのプロパティ (文字列とブール値) があり、他のいくつかのプロパティはその基本クラス (ViewModelDetailBase) によって公開されます。そのうちの 1 つはビューモデルの背後にあるモデルです。

グリッドを使用していずれかのプロパティ (ブール値など) の内容を変更するたびに、「型 xxx をシリアル化できません..」というエラーが表示されます (xxx はモデルの型です)。この問題を回避するには、DataContractAttribute を使用してください。解決策を探す方法と場所がわかりません。多分私はそれを読む必要がありますが、なぜシリアル化がここで必要なのですか??

とにかく、これに光を当てていただければ幸いです。正しい方向に向けるためのいくつかの指針をいただければ幸いです。

編集:状況が複雑すぎて関連するコードをここに投稿できないため、エラーを再現するサンドボックス プロジェクトを作成しました。この WeTransfer リンクから見つけることができます。

よろしく、〜ロブ

4

1 に答える 1

0

Simple MVVM Toolkit コミュニティの大きな助けのおかげで、解決策が簡単であることがわかりました。

Simple MVVM Toolkit では、ビューモデルは複製されるため、シリアライズ可能である必要があります。これは、アクションがキャンセルされたときにデータを簡単にロールバックするためです。ビューモデルのクローンを作成できなかった理由は、その「モデル」プロパティにデフォルトの (パラメーターのない) コンストラクターがないためです。

ビューモデルとそのプロパティを[DataContract]または[DataMember]で装飾する必要はありません。

これが他の人に役立つことを願っています。

于 2013-07-30T09:09:54.347 に答える