1

最後にコンストラクターにパラメーターが含まれている場合、ユーザーコントロールをビューモデルオブジェクトにバインドするにはどうすればよいですか???

ビューで「DataContext」を使用するバインディングは、ビューモデルを作成するときにビューが自動的に作成されることを保証しますか??

4

1 に答える 1

1

IoC コンテナーを使用している場合、これはすぐにサポートされます。

使用している IoC コンテナに大きく依存しますが、ここでは Prism Unity コンテナを使用した例を示します。

次の例は、Prism QuickStarts ガイドから抜粋したものです。

したがって、最初に Unity コンテナーをセットアップする必要があります。

public class QuickStartBootstrapper : UnityBootstrapper
{
   private readonly CallbackLogger callbackLogger = new CallbackLogger();

    /// <summary>
    /// Configures the <see cref="IUnityContainer"/>. 
    ///May be overwritten in a derived class to add specific
    /// type mappings required by the application.
    /// </summary>
    protected override void ConfigureContainer()
    {
        // Here you can do custom registeration of specific types and instances
        // For example
        this.Container.RegisterInstance<CallbackLogger>(this.callbackLogger);

        base.ConfigureContainer();
    }
}

基本的に、これで完了です。あとは、次のように、viewModel をコンストラクターのパラメーターとしてビューに受け取るようにするだけです。

public partial class OverviewView
{
    public OverviewView(OverviewViewModel viewModel)
    {
        InitializeComponent();
        this.DataContext = viewModel;
    }
}

Unity IoC コンテナーは、ほとんどの場合、これらのタイプを登録しなくても、ViewModel のパラメーターを処理します。

私の回答では、構成の IoC 部分のみを参照したことに注意してください。MVVM アプリケーション全体をセットアップするには、もう少し作業が必要で、使用している MVVM フレームワークによって異なります。

于 2013-09-16T06:09:10.103 に答える