我正在使用Ninject將視圖模型實例注入到每個視圖的DataContext屬性中,以避免使用ServiceLocator,並且我正在使用以下語法NinjectModule的建議here:WP7和Ninject,如何強制應用程序從IoC容器中獲取視圖
public class TestingModule : NinjectModule
{
public override void Load()
{
Bind<MainPage>().ToMethod(ctx => new MainPage() { DataContext = new MainPageViewModel() }).InSingletonScope();
}
}
如果我使用:
var x = Kernel.Get<MainPage>();
那麼x裏面的DataContext屬性設置爲MainPageViewModel的實例,這是偉大的。
問題是,當瀏覽頁面或啓動時,應用程序無法從DI容器獲取視圖實例,因此在設備上運行應用程序或內部時,DataContext屬性從不會設置在任何視圖中模擬器。
有誰知道我如何攔截視圖的創建,以便我可以強制應用程序從DI容器中檢索視圖實例?