0

Ninjectを使用してビューモデルのインスタンスを各ビューのDataContextプロパティに挿入し、ServiceLocatorの使用を避け、 hereを示唆したようNinjectModule: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コンテナから取得するようにアプリを強制することができるようにビューの作成を傍受する方法を知っていますか?

答えて

1

車輪を改造するのではなく、Caliburn MicroのようなさまざまなMVVMフレームワークの1つを見てください。彼らはIoCコンテナを使用している間、ビューを結びつけてモデルを一緒に見ることを容易にする素晴らしい仕事をしました。ここで

はどのようWP7にNinjectとセットアップカリバーンマイクロ約ブログ記事です:http://devlicio.us/blogs/derik_whittaker/archive/2011/07/08/using-ninject-with-commonservicelocator-with-caliburn-micro-on-wp7.aspx

0

あなたはメインページのコンストラクタに次の行を追加することができます。

DataContext = Kernel.Get<MainPageViewModel>(); 
関連する問題