1

GUI アプリケーションでは、ここで説明されているように、パッシブ ビューで MVC を使用しています。

このパターンは、model-view-controller および model-view-presenter のさらに別のバリエーションです。これらと同様に、UI は、表示を処理するビューと、ユーザーのジェスチャーに応答するコントローラーに分割されます。パッシブ ビューの重要な変更点は、ビューが完全にパッシブになり、モデルから自身を更新する必要がなくなったことです。その結果、すべてのビュー ロジックはコントローラー内にあります。その結果、ビューとモデルの間でどちらの方向にも依存関係はありません。

これまでのところ、私の Controller は、初期化時に Passive View 自体によって作成された既存の静的コンポーネントにリスナーとして登録します。ここで、コントローラーは、モデルに応じて可変量の UI コンポーネントを動的に作成する必要があります (具体的には、今、チェックボックスのグリッドについて話している - グリッドの寸法は可変です)。

ここに私の躊躇があります:

  1. この動的 UI 作成コードをコントローラーに実装する必要がありますか? これにより、ビューがモデルを認識しないようにすることで、コードがより単純になりますが、プレゼンテーションの一部はコントローラーによって決定されます...
  2. ビューは、オンデマンドで UI コンポーネントを作成するためのモデルに依存しない一般的な方法を提案し、コントローラにそれを使用させ、取得した UI コンポーネントにリスナーを登録させる必要がありますか? ここで、Controller は Model オブジェクトと汎用オブジェクト (具体的には、文字列、整数など) の間で相互に変換する必要があります
4

1 に答える 1

2

ビューが動的コントロールの作成を必要とするときはいつでも、それは何かのコレクションのためである傾向があります。つまり、プレゼンター/コントローラーはすべてのロジックを作成する必要はありませんが、コントロールを作成するビューでメソッドを呼び出す必要があります。

ビュー上:

void PopulateUserOptions(IEnumerable<String> options)
{
    foreach (var item in options)
    {
        \\create and add your controls to the form
    }
}

このように、コントローラーは、いつcontrollを作成する必要があるかなどを表現しますが、それを実行する方法を決定するのはビューに任せます。

于 2012-01-08T00:42:37.387 に答える