1

Model View Presenter パターンを調査しています。これまでのところ、私が見ているものは気に入っていますが、ほとんどすべての記事、ウェブキャスト、ポッドキャストなどです。私が見たり、読んだり、聞いたりしたことは、テキストボックスからの単純な型の設定と取得に対処する傾向があり、対処方法を理解するのに苦労していますより複雑な UI コントロールを備えています。

たとえば、CheckedListBox があるとします。この CLB では、使用可能なすべての選択肢と、特定​​のインスタンスに対して選択された選択肢を表示したいと考えています (FavouriteIceCreamFlavours リストを持つ Friend クラスを想像してください)。リスト ボックスを簡単に埋めることができますが、選択されているものをどのように設定するのでしょうか (たとえば、この友人のその後の編集で)。また、これらの変更を元の Friend オブジェクトに永続化するにはどうすればよいでしょうか?

別の候補は TreeView です。TV のノードを右クリックして、ユーザーがそのノードを削除できるようにしたいとします。そのアクションをプレゼンターに伝える最善の方法は何ですか?

乾杯、

レニー。

(PS 私は C# 3.5/WinForms 環境で開発しています)

4

1 に答える 1

0

私もこのMVPのことは初めてです。しかし、私は自分が何をするか試してみます。ツリービューで行うことは、ビュー内の削除を単なる UI イベントとして処理することですが、何らかのデータベース ロジックなどを使用する場合は、これを行うことができます。

してただろう:

プレゼンター インターフェイス:

Interface IPresenter
{
   bool DeleteItem(string itemName);
}

ビュー クラス:

class View : IView
{
   IPresenter presenter = new Presenter(this);

   void DeleteButtonClick(//SomeEventArgs)
   {
      bool vaild = this.presentor.DeleteItem(//Get the selected item);
      if (vaild)
      { //Delete the item from the tree view }
   } 
}

プレゼンター クラス:

class Presenter : IPresenter
{
     public bool DeleteItem(string itemName)
     {
       // Check for valid delete.
       return true or false
     }
}

うまくいけばうまくいくはずです。

于 2009-06-30T13:52:20.630 に答える