MVVMライトと元に戻す/やり直し?
-
25-09-2019 - |
質問
おそらくここでいくつかの責任(そしておそらく用語)を混同しているのですが、これについて完全に理解することができません。
コマンド パターンと MVVM Light (したがって WPF にも) にあるコマンドの間には関係がありますか?何らかの元に戻す/やり直しのメカニズムを実装したいと思っていますが、それを実行する「MVVM Light way」があるかどうかはよくわかりません。
また、これが MVVM Light に関連していない場合、MVVM Light WPF に対して動作せずに、「生の」状態で元に戻す/やり直しを使用してコマンドを実行するにはどうすればよいでしょうか?
解決
MVVM Light と WPF のコマンドは一般に、単一のオブジェクトとインターフェイス内に任意の機能セットをカプセル化し、任意の数の UI 要素を接続してそのアクションを実行する方法です。
これらのコマンドは、元に戻す/やり直し機能のコマンド パターン実装に組み込むことができますが、さらに多くのコマンドが必要です。
独自のコマンド スタックをロールすることができます。これが、現在の WPF プロジェクト (Prism を使用) で私が取ったルートです。
基本的に、これは考え方の転換であり、ユーザーが UI を通じて行うすべての変更は、
- コマンドで包まれている
- 対応する元に戻すコマンドがあります
- スタックにプッシュされる
これを支援するために利用できるオープンソース プロジェクトもあります。 http://undo.codeplex.com/, これは、Visual Studio チームのメンバーである Kirill Osenkov のサイド プロジェクトです。
他のヒント
私は、WPFアプリケーションのUNDO / REDOを実装し、 HTTPに私のアンドゥ/リドゥコードを公開://muf.codeplex。 COM / に。
私は、ロジックをカプセル化するためにCommandパターンを使用しての推奨アプローチをしようと考えました。それは紙の上で良いようだが、私の場合、それは非常に確実に元に戻す/変更のセットをやり直すことができ、コマンドの中にすべてのアクションを配置する方法を見つけ出すために挑戦見えました。代わりに、私は変更のための基礎となるモデルを「監視」して、アンドゥスタック内のそれらの変更を保存するアプローチをとりました。これは、コマンドパターンの種類などであるが、「ボトムアップ」のアプローチインチアンドゥアクションは、モデルを変更した結果として、「脱落します」。
はアクションが変更をやり直し/取り消し、その後、変更のスタック上にあることを置くための代表的な変化の単位にそれらを格納し、モデルのセッターの変化を傍受することによって収集されます。 MUFライブラリは、変更の単位を作成、および、スタックを管理するための論理を含むよります。
コメントや質問は、CodePlexのサイト上で歓迎されている( http://muf.codeplex.com/する) 。あなたはまた、完全なドキュメントとサンプルアプリケーションがあります。
を見つけることができますまた、NuGet経由でそれを得ることができます。ただ、「MUF」または「監視元に戻すフレームワーク」を探してください。これは、Silverlight 4.0と同様に、.NET 3.5、4.0、およびWP7のサポートが含まれます。
私はMVVM WPFまたはIのいずれかの固有のアンドゥ/リドゥ機能を知りませんが怖います。
MVVM光が急速にのみMVVMを実装するための非常に良い軽量のツールキットです。あなたが自分で実装する必要があるとしている。
任意の追加パターン