0

私はSilverlightアプリケーションを持っていますが、MVVMを使用するコントロールはほとんどありません。私はすべてのコントロールをmvvmに移動する時間はあまりありませんが、そのコントロールにいくつかのサービスを注入する必要があります。UnityContainerを使用してコードビハインド経由でビューに依存関係を挿入

いくつかのコントロールは次のようにXAMLでそれらを宣言することによって作成されているので:私はコンストラクタ・インジェクションを使用して依存関係を注入するためのオプションを見ることができない

<UserControl> 
<Grid> 
<MyControlWithoutMVVM/> 
</Grid> 
</UserControl> 

多分私は間違っているので、私はその質問を投稿しています。

解決策はありますか?

私のCompositionRootは、AppクラスのApplicationStartupメートンにあります。

答えて

2

XAMLコードに要素を挿入すると、これらのオブジェクトのインスタンス化を制御しないため、コンストラクタインジェクションを使用する方法がありません。

あなたはXAMLからの要素の作成を削除し、

  • Caliburn.Microを見てするかはあなたのviewmodelsに基づいて作業することができますし、(のviewmodel最初の)あなたのためのビューを作成するか、それはあなたがして作業することができますあなたのUIとviewmodels(最初のビュー)を解決します。

または

  • PRISMあなたのUIを構成し、DIを使用してオブジェクトを作成することを可能にしながら、地域内の要素を配置することができます。

DIをドロップしてServiceLocatorのようなアプローチ(which I cannot recommend)に切り替えることができます。

関連する問題