私が理解しているように、MVPを使用するときは、すべてのプレゼンテーションロジックをプレゼンタに移動します。しかし、プレゼンターにビューの実装について知らせたくないので、アプリケーションの別の画面に移動するにはどうしたらいいですか?実際のアプリケーションでアプリケーションフローをどのように管理しますか?C#WinFormsを使用してMVPのビュー間をどのように移動しますか?
答えて
これはビューのメソッドです。たとえば、ShowCustomerForm()のような抽象メソッドがあり、WinFormsの実装はCustomerForm.Show(またはWinFormsにあるもの)とWebFormsではResponse.Redirict(CustomerForm.aspx)になります。
例えば、いくつかのナビゲータインタフェースの使用:
interface INavigator
{
void MoveTo (string screenName);
void MoveTo (string screenName, NavigationParameters parameters);
}
各プレゼンタを、次いで、コンストラクタに渡され、このナビゲータのインスタンスを有することになります。このように、ナビゲーションはプレゼンターと個々のビューの両方から切り離されます。
設定で定義されたスクリーン名と実際のフォームクラスの間のマッピングを持つことができます。
独自のMVPペアを持つ別の画面を意味するとしますか?
私は今朝このケースについて考えていましたが、私の解決策は、コーディネーターがプレゼンターとMVPペアを開く必要があることを知っていることでしょう。新しいプレゼンター+ビューが開き、終了すると、オプションで、最初のプレゼンターのメソッドが結果とともに呼び出されます。
このようにして、最初のMVPは新しい画面について何も知る必要はなく、イベントを発生させるだけです。第2のウィンドウを開いて通信するロジックは、コーディネーターに完全に含まれています。
Lennaertがコーディネーター(これをワークフローコントローラと呼ぶ)を使用してこれを行います。私はJava Web開発から来て、アイデアはApplicactionControllerの一種でした。私はこれに関するいくつかの問題にぶつかりました、workflowcontrollerコマンドを実行します。各コマンドは、ワークフローまたは一連の関連手順(したがって、ワークフローコントローラの名前)を表します。フローコントローラはコマンド間のナビゲートを処理し、フローコントローラはステップ間をナビゲートするナビゲータを有する。各ステップには終了イベント(プレゼンターが接続する)とNextStepメソッドがあり、これを使用して次のステップにナビゲートします。われわれのworflowcontrollerはメニューに密接に結合されているので、異なるワークフロー間をナビゲートすることができます。手順は、ビューとプレゼンターの間のリンクを確立します。私たちには設定がなく、NextStepというメソッドに実行するための次のステップを確立するロジックが組み込まれています。それは生産されていますが、私はこれにはあまり満足していません。ここに入るためには、あまりにも詳細です。 私はイベント駆動型のものに移行することを考えました。私たちはメッセージバスを使って他のすべてのコミュニケーションを行い、これを使って画面間を移動します。それが役に立つかどうかわかりません。私たちの画面はほとんどの場合、順次ワークフローで構成されています。
- 1. MVPを使用して異なるビューを動的に追加
- 2. どのようにWinformsでプレゼンテーションモデルを使用しますか?
- 3. winformsのMVPパターンを使用して動的に作成されたUIを持つMVPパターン
- 4. どのようにして共通オブジェクトバインディングをwinformsで使用しますか?
- 5. winformsのMVC MVPパターンを使用
- 6. C#winforms mvpプレゼンターの子フォームを表示
- 7. どのようにイメージを並べて移動しますか?
- 8. Backbone.jsビューを使用してイベントにどのようにバインドしますか?
- 9. どのようにタイマーを使用して画像を移動し、タイマーのループを作成しますか?
- 10. UINavigationControllerを使用して別のビューに移動する
- 11. ストーリーボードのボタンを使用してNavigationControllerに埋め込まれたビュー間を移動します
- 12. ナビゲーションバーのアイテムを使用して他のビューに移動するにはどうすればいいですか?
- 13. winformsを使用してC#のマウスクリックでボールをペイントするにはどうすればよいですか?
- 14. UIButtonを使用してUIView間を移動します
- 15. C#winformsはAsp.netのようなHtmlDecode()を持っていますか? C#を使用してウェブで
- 16. Haskellを使用してデータベース間を移動するにはどうすればよいですか?
- 17. FTPを使用してディレクトリ間でファイルを移動するにはどうすればよいですか?
- 18. どのようにtkinterのカーソルを移動しますか?
- 19. Winformsのページ間の移動のエミュレート
- 20. uiscrollをページに移動し、上下のボタンを使用してページ間を移動します。
- 21. 夜間自動ビルドにはどのようなツールを使用しますか?
- 22. WinFormsで書かれたウィザードのMVC、MVP、またはMVVMパターンを使用していますか?
- 23. SDL2、C++を使用して画面を移動するにはどうすればよいですか?
- 24. C#のDateTime値を使用して、時間のない日付をどのように表示しますか?
- 25. MVPパターンを使用してWinformsでプロジェクトを構成する方法は?
- 26. WinFormsを使用したMVPでの非同期呼び出しのベストプラクティス
- 27. 私はどのように私のwinformsアプリケーションをtelnetで起動しますか?
- 28. C#OpenGL - シェーダを使用してライトをカメラと一緒に移動しようとしています
- 29. C#を使用してhtmlチェックボックスをどのように評価しますか?
- 30. Pangestureを使用して親ビュー内のUIViewを移動
ビューがICustomerFormインターフェイスのインスタンスを作成した後、次のようないくつかのメソッドを使用してプレゼンターに渡すことができます。Init(CustomerFormPresenter) – dzendras