2009-08-22 23 views
0

は、IViewInterfaceで定義されているようにどのコントロールにアクセスするかを知っているプレゼンタに基づいています。例えば、2つのテキストボックスと1つのボタンがフォーム上にある場合は、テキストボックスの2つのプロパティを持つIViewInterfaceを定義し、ボタンのクリックイベントでPresenterに呼び出しを転送すると、プレゼンタはその2つのプロパティにアクセスできます。ものすごく単純。あなたのUIがデータベースのテーブルに基づいて実行時に構築されるかどうか想像してみましょう。データベースに500個のテーブルがあり、それらの500個のテーブル用にCRUDアプリケーションを設計したいとします。データベースのどこかで、UIのレイアウトをどのようにレイアウトするかを定義します。実行時にこれらの500テーブルのUIコントロールを作成する1つのプログラムがあります。このような場合にMVPパターンをどのように適用しますか?winformsのMVPパターンを使用して動的に作成されたUIを持つMVPパターン

+0

私が質問を投稿するとすぐに-1が得られます。それを続ける – codemnky

+0

私は生地の学習とレーキを続ける限り、評判、ポイント獲得、mvpにラットのお尻を与えません – codemnky

+0

インターネットは素晴らしいです。重要な知識を得るために40年の経験を持つ必要はありません。短期間でこれを得る手段があります。 – codemnky

答えて

1

多くの多くのプログラマが、完全に動的なユーザーインターフェイスを試してきました。多くの人が基本的な前提、つまりテーブル - > UIを作ることができると確信していますが、何も実際にはうまくいきませんので、自分のことをやっているほうが良いです。

異なるアプローチがあると思われる場合は、試してみて、それがどのように機能するかを確認する必要があります。

0

このため、プレゼンターはコントロールをまったく気にする必要はありません。

ビューは、このデータをプロパティとして公開している可能性があります。 500個のUIレイアウトを持つ500個のテーブルがすべて少なくともGridViewのような標準の表示コントロールを使用している場合、GridViewのアクティブな行の "CurrentTableName"と "CurrentRow"のいずれかのプロパティを公開できます。プレゼンターはそれらを受け取り、DTOオブジェクトまたはDMオブジェクトに変換して、ビジネスレイヤーまたはサービスレイヤーに渡すことができます。

この場合、これは可能かもしれません。リサイズでMVPパターンを使用して

+0

私は同様の考えを持っていました。私は自分のIViewがこのような方法を1つだけ持つと考えていました。 リスト GetValuesFromTheFormForTheseControls(リスト ControlNames) テーブルフィールドをコントロール名として使用するため、プレゼンターはいつでもこのメソッドを呼び出します。コントロール – codemnky

0

真IViewInterfaceで定義されて としてアクセスするための制御どの を知るプレゼンターに を前提としているが、動的なGUIの場合には、あなたはしないでくださいこれらのコントロールを個別にインターフェイスのプロパティとして公開する必要があります。ジェネリックコントロールを共通のプロパティを持つクラスとして定義し、これらのコントロールのリストをビューインターフェイスの単一のプロパティとして公開することができます。

これはこれを行うための1つの方法です。デザインは正確なシナリオに依存します。しかし、一般的に私は動的なGUIがであると言っています。はMVPを導入するための候補であり、逆ではありません。

関連する問題