Windows フォームの UI デザイン パターン (WPF の MVVM など) 質問する

Windows フォームの UI デザイン パターン (WPF の MVVM など) 質問する

MVVM は WPF に最適であるため、WPF で最もよく使用されます。しかし、Windows フォームについてはどうでしょうか。Windows フォームにも、このような確立された、一般的に使用されているアプローチ / デザイン パターンはありますか。Windows フォームで明確に適切に機能するものはありますか。これをうまく説明している本や記事はありますか。MVP または MVC ベースのものでしょうか。

ベストアンサー1

私は MVP を試してみましたが、Windows フォームでもうまく機能するようです。この本には、MVP パターンを使用した Windows フォームの例 (サンプル給与計算アプリケーション) があります。アプリケーションはそれほど複雑ではありませんが、作成方法についてのアイデアが得られます。

C# におけるアジャイルの原則、パターン、実践...

ソースコードは以下から入手できます。ソースコード

編集:

MVPパターンには、(a)受動的な視点と(b)監視コントローラの2つのバリエーションがあります。

複雑なデータバインディング シナリオの場合は、スーパーバイズ コントローラー パターンを使用することをお勧めします。スーパーバイズ コントローラー パターンでは、データバインディングの責任はビューにあります。したがって、ツリー ビュー/データ グリッドの場合、これはそれぞれのビューにある必要があり、ビューに依存しないロジックのみがプレゼンターに移動される必要があります。

以下のMVPフレームワークをご覧になることをお勧めしますMVC# - MVP フレームワーク

名前に惑わされないでください (これは MVP フレームワークです)。

シンプルな WinForms MVP ビデオWinforms - MVP

ドロップダウンリストを扱う例MVP - ドロップダウンリスト

シンプルなツリービュー バインディングの例 (貧乏人のバインディング)。BindTree() にツリービュー固有のロジックを追加できます。

以下はコード スニペットです。テストは行われておらず、考えから直接入力されています。

public interface IYourView
{
   void BindTree(Model model);
}

public class YourView : System.Windows.Forms, IYourView
{
   private Presenter presenter;

   public YourView()
   {
      presenter = new YourPresenter(this);
   }

   public override OnLoad()
   {
         presenter.OnLoad();
   }

   public void BindTree(Model model)
   {
       // Binding logic goes here....
   }
}

public class YourPresenter
{
   private IYourView view;

   public YourPresenter(IYourView view)
   { 
       this.view = view;
   }

   public void OnLoad()
   {
       // Get data from service.... or whatever soruce
       Model model = service.GetData(...);
       view.BindTree(model);
   }
}

おすすめ記事