WPF の Ninject で迷っています。
App.xaml で初期化していますが、MainWindow.xaml の ITest プロパティ (InjectAttribute を使用しても) が解決されず、null のままです。
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
IKernel kernel = new StandardKernel();
kernel.Bind<ITest, Test>();
base.OnStartup(e);
}
}
少しググったところ、そのようには機能しないことがわかりました。解決策を見つけようとして、「void Show();」だけで IMainWindow を作成することになりました。それをMainWindowに追加します。
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
IKernel kernel = new StandardKernel();
kernel.Bind<ITest, Test>();
kernel.Bind<IMainWindow, MySolution.MainWindow>();
kernel.Get<IMainWindow>().Show();
base.OnStartup(e);
}
}
このため、.Get の行で NullReferenceException を取得しています。
私もこれを試しました:
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
IKernel kernel = new StandardKernel();
kernel.Bind<ITest, Test>();
MainWindow = new MySolution.MainWindow(kernel);
//then kernel.Inject(this); in the MainWindow constructor
MainWindow.Show();
base.OnStartup(e);
}
}
今、MainWindow の .Inject 行で NullReferenceException を取得しています。
別のさまざまな解決策を見つけましたが、それらは重く見えたので、それらすべてをテストしてどれが機能するかを試すことを断念しました。
何か助けてください。