Я использую Ninject для внедрения экземпляров модели представления в свойство DataContext каждого представления, чтобы избежать использования ServiceLocator, и использую следующий синтаксис внутри NinjectModule, как предлагается здесь :
public class TestingModule : NinjectModule
{
public override void Load()
{
Bind<MainPage>().ToMethod(ctx => new MainPage() { DataContext = new MainPageViewModel() }).InSingletonScope();
}
}
Если я использую:
var x = Kernel.Get<MainPage>();
Тогда свойство DataContext внутри x устанавливается на экземпляр MainPageViewModel, и это здорово.
Проблема заключается в том, что приложение не получает экземпляры представления из контейнера DI при переходе на страницы или при запуске, поэтому свойство DataContext никогда не устанавливается ни в одном из представлений при запуске приложения на устройстве или внутри эмулятор.
Кто-нибудь знает, как я могу перехватить создание представлений, чтобы заставить приложение извлекать экземпляры представлений из контейнера DI?