[解決済み] WindowsフォームのUIデザインパターン(WPFのMVVMのようなもの)
質問
MVVMはWPFに最適なため、WPFで最もよく使用されます。しかし、Windows Formsではどうでしょうか?Windows Formsにもこのような確立されたよく使われるアプローチ/デザインパターンがあるのでしょうか?Windows Forms で明示的にうまく機能するものは?これをうまく説明している本や記事はないでしょうか? たぶんMVPかMVCベース?
解決方法は?
MVPを試しましたが、ウィンドウズフォームとも相性が良いようです。 この本には、MVPパターンを使ったウィンドウズフォームの例(給与計算アプリケーションのサンプル)が掲載されています。 このアプリケーションはそれほど複雑ではありませんが、どのように作成すればよいかのヒントを与えてくれるでしょう。
ソースコードは以下から入手できます。 ソースコード
EDIT
MVPパターンには2つのバリエーションがあります。 (a) 受動的なビュー、(b) 監視するコントローラ
複雑なデータバインディングのシナリオでは、私はSupervising Controllerパターンを好んで使用します。 Supervising Controllerパターンでは、データバインディングの責任はビューにあります。 つまり、ツリービューやデータグリッドの場合は、それぞれのビューにあるべきで、ビューに依存しないロジックだけがプレゼンターに移されるべきです。
次のMVPフレームワークを見てみることをお勧めします。 MVC# - MVPフレームワーク
名前に踊らされるな(MVPフレームワークです)。
シンプルなwinformsのMVP動画 Winforms - MVP
ドロップダウンリストを扱う例 MVP - DropDownList
シンプルなツリービューバインディングの例(貧乏人のバインディング)です。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);
}
}
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン