public class StatisticsViewPresenter
{
private IStatisticsView view;
private Statistics statsModel;
public StatisticsViewPresenter(IStatisticsView view, Statistics statsModel)
{
this.view = view;
this.statsModel = statsModel;
}
}
私はイベントを使用しません (ただし、問題を解決できる場合は喜んで使用します)。そのため、View クラスは次のようになります。
public class StatisticsForm : Form, IStatisticsView
{
public StatisticsForm()
{
InitializeComponent();
}
[Inject]
public StatisticsViewPresenter Presenter
{
private get;
set;
}
}
と
kernel.Bind<StatisticsPresenter>().ToSelf().InSingletonScope();
kernel.Bind<IStatisticsView>().To<StatisticsForm>();
kernel.Get<IStatisticsView>();
フォームを構築し、プレゼンターを構築してから、プレゼンターを Presenter プロパティに挿入します。すべてが桃色です。(そのシングルトン スコープのプレゼンターを除いて、それを行うためのより良い方法について何か考えはありますか? おそらく、プレゼンターのコンストラクター内のビューの Presenter プロパティに手動でプレゼンターを挿入するだけです: this.view.Presenter = this)。
しかし、StatisticsForm を StatisticsUserControl に変換し、それを MainForm にドラッグ アンド ドロップすると、Ninject によって MainForm に挿入されるのではなく、単に Designer によって新しく作成されるだけです。ここに 3 つの解決策があります。
1) UserControls を使用せず、これらの複数のビュー (eww) を実装する 1 つの巨大なフォームのみを使用します。
2) UserControls をフォームに挿入すると、デザイナーのサポートが失われます。
3) あなたの解決策! :)