お気づきのように、パラメーター化されたコンストラクターはフレームワークを壊すため使用できません。ナビゲーションはページ URI のみを使用し、他の追加パラメーターは使用しません。
では、パラメーター化されたコンストラクターを使用せずに IoC を使用するにはどうすればよいでしょうか。依存性注入コンテナーを使用する必要があります。このようなもの:
public partial class MyPage: UserControl
{
private MyViewModel: IViewModel;
public MyPage()
{
MyViewModel = MyViewModelFactory.Create(IViewModel);
InitializeComponent();
}
}
MyVewModelFactory は、他のオブジェクトを作成するオブジェクトです。自分でコーディングする必要はありません。一般的な IOC コンテナーには次のものがあります。
- 団結
- MEF
Unity を使用すると、コードは次のようになります。
public partial class MyPage: UserControl
{
private MyViewModel: IViewModel;
public MyPage()
{
MyViewModel = container.Resove<IViewModel>();
InitializeComponent();
}
}
MEF を使用すると、コードは次のようになります。
public partial class MyPage: UserControl
{
[Import(GetType(IViewModel))]
private MyViewModel: IViewModel;
public MyPage()
{
InitializeComponent();
}
}