4

PRISM を使用してモジュールを作成しようとしていますが、現在、ビュー内に DataContext を設定しています。これは、パラメーターなしのコンストラクターしか使用できないことを意味しますが、コンストラクターで依存性注入 (Unity を使用) を使用できないことを意味します。

可能であれば、ビューもvmもお互いを知りたくないので、次のようなものを使用したいと思います

private void RegisterServices()
{
    var employeeViewModel = new EmployeeViewModel();

    _container.RegisterType<IEmployeeViewModel, EmployeeViewModel>();
    _container.RegisterType<EmployeeView>();

    EmployeeView.Datacontext = employeeViewModel;
}

EmployeeModule に登録するもの

これは可能ですか、それともコードビハインドを使用する必要がありますか?

4

2 に答える 2

2

コンストラクターでのインターフェイスViewModelを渡すことができます。Viewこのように、Viewのインターフェースのみを認識し、ViewModelについてViewModelは何も認識しませんView

元。

public class EmployeeView : UserControl
{
    public EmployeeView(IEmployeeViewModel vm)
    {
         this.DataContext = vm; //// better to set the ViewModel in the Loaded method
    }
}

MVVM インスタンス化の複数のアプローチについては、このブログ投稿を参照してください。

于 2013-02-14T07:57:38.260 に答える