1

私のアプリケーションは MDI Winform アプリケーションです。MVP パターンとデータ バインディングに関連する問題に遭遇しました。

私のフォームはすべてモードレスです。フィールドを変更したり、コンボボックスで選択したアイテムを変更したりするときに、モデルを変更し、すべてのフォームをモデルとすぐに同期させたいと考えています。データバインディングにより、これは単純なフィールドで完全に可能になり、複雑な操作では、Presenter を使用してビューを「手動で」更新します。

しかし、元に戻す/やり直すメカニズムをどのように写真に収めるのですか? つまり、「元に戻す」ボタンをクリックして、テキスト フィールドで行った変更を元に戻したいのです。

コマンドパターンを適用しようとしましたが、データバインディングメカニズムに「コマンド」メカニズムを導入する場所がないようです。私はこれに固執しているため、バインディングメカニズムを完全に放棄することを検討しています。

Binding に関する記事はたくさんありますが、元に戻す/やり直しの解決策が実際に公開されているわけではありません。

元に戻す/やり直しとデータバインディングは本当に互換性がありませんか?

4

1 に答える 1

0

Monitored Undo Framework ( http://muf.codeplex.com/または NuGet) のようなライブラリを使用して、元に戻すスタックを管理できます。Command パターンは必要ありません。代わりに、モデルへの変更を監視し、それらの変更を元に戻すスタックにプッシュします。変更を元に戻すとは、スタックから前の値をプルしてモデルにプッシュすることを意味します。

このライブラリは WPF 用に作成されていますが、バインディングが適切にセットアップされていれば、WinForms でも動作するはずです。さらに、モデルにコールバックをフックして、取り消し/やり直し操作によって値がいつ変更されたかを知ることができます。

ライブラリには、ドキュメント、単体テスト、および使用方法を示すいくつかのサンプルへのリンクがあります。

于 2011-07-01T18:16:22.447 に答える