3

CustomerRepositoryをCustomerVMビューモデルに挿入するにはどうすればよいですか?私の見解では、私が持っているWPFページは次のとおりです。

<Page.DataContext>
    <viewModel:CustomerVM/>
</Page.DataContext>

しかし、私のビューモデルコンストラクターには明らかにパラメーターが渡されています。

    public CustomerVM(ICustomerRepository customerRepository)
    {
        //this._customerRepository = customerRepository;
    }

私は得る

タイプ'CustomerVM'は、パブリックではないか、パブリックのパラメーターなしコンストラクターまたはタイプコンバーターを定義していないため、オブジェクト要素として使用できません。

本当に苦労しています。

助けていただければ幸いです。

4

1 に答える 1

1

依存性注入を使用している場合、XAML 内で DataContext を初期化できないと思います。Unity が依存関係を解決できるように、ビューのコード ビハインドで DataContext を設定します。これを YourView.xaml.cs に追加してみてください。

public YourView(CustomerVM viewModel)
{
    InitializeComponent();

    this.DataContext = viewModel;
}

Unity を介してビューを解決している場合、上記は機能します。そうでない場合は、ServiceLocator を使用してビュー モデルを解決することもできます。

using Microsoft.Practices.ServiceLocation;

public YourView()
{
    InitializeComponent();

    this.DataContext = ServiceLocator.Current.GetInstance<CustomerVM>();
}

Prism を使用していない場合は、ServiceLocator をセットアップするために、登録コードのどこかに次を追加する必要がある場合もあります。

ServiceLocator.SetLocatorProvider(new ServiceLocatorProvider(() => new UnityServiceLocator(_unityContainer)));
于 2012-10-25T19:28:21.243 に答える