1

複合アプリケーション (Prism) でモジュールをロードすると、次のエラーが発生します。

{"現在のビルド操作 (ビルド キー Build Key[CustomersModul.ViewModels.CustomerAllViewModel, null]) が失敗しました: コンストラクター CustomersModul.ViewModels.CustomerAllViewModel(CustomersModul.Views.CustomerAllView ビュー) を呼び出そうとしたときに、パラメーター ビューを解決できませんでした。(戦略の種類 Microsoft.Practices.ObjectBuilder2.BuildPlanStrategy、インデックス 2)"}

私はこのクラスを解決しています:

CustomerAllViewModel layoutManager = this.container.Resolve<CustomerAllViewModel>();

そして、そのクラスは次のようになります

public class CustomerAllViewModel : ViewModelBase
{
    public CustomerAllView View { get; set; }
    public ICommand TextChangeCommand { get; set; }
    private Customer customer;

public CustomerAllViewModel(CustomerAllView view)
{
    View = view;
    view.DataContext = this;
    ...

通常、コンストラクター パラメーターを持たないプレゼンターを解決し、それらのビューを内部でインスタンス化します。View をパラメーターとして受け入れるViewModelを使用するのはこれが初めてです。

興味深いことに、Resharperを使用してビューに移動すると、XAML またはコード ビハインドに移動するかどうかを尋ねられるので、おそらく Prism はどちらをインスタンス化するか混乱していますか?

Prism でこのビュー (XAML とコード ビハインドを使用した UserControl) をパラメーターで自動的にインスタンス化するにはどうすればよいですか?

4

2 に答える 2

4

これは実際にはエラーではなく、別の問題である場合があります。内部例外を確認するか、Microsoft.Practices.Composite.ExceptionExtensions.GetRootException(ex)を呼び出してルート例外を取得します。表示されていないコンストラクターの1つでエラーがスローされていることに気付くでしょう。

于 2009-07-28T14:44:27.517 に答える
0

CustomerAllViewをコンテナに追加しましたか?コンテナにタイプを追加するのを忘れた場合、通常このエラーが発生します。

于 2009-07-30T08:49:45.550 に答える