私は、このリンクhttp://compositewpf.codeplex.com/discussions/250892で説明されているように、ツールバーのカスタム領域アダプタを実装しました。私はこのエラーが発生します: 'ToolBarRegionAdapter'に0引数を取るコンストラクタが含まれていません。ここ 私のコード:カスタム領域アダプタ(PRISM)
public class ToolBarRegionAdapter : RegionAdapterBase<ToolBar>
{
public ToolBarRegionAdapter(IRegionBehaviorFactory behaviorFactory)
: base(behaviorFactory)
{
}
protected override IRegion CreateRegion()
{
return new AllActiveRegion();
}
protected override void Adapt(IRegion region, ToolBar regionTarget)
{
region.Views.CollectionChanged += (sender, e) =>
{
switch (e.Action)
{
case NotifyCollectionChangedAction.Add:
foreach (FrameworkElement element in e.NewItems)
{
regionTarget.Items.Add(element);
}
break;
case NotifyCollectionChangedAction.Remove:
foreach (UIElement elementLoopVariable in e.OldItems)
{
var element = elementLoopVariable;
if (regionTarget.Items.Contains(element))
{
regionTarget.Items.Remove(element);
}
}
break;
}
};
}
}
私は私のブートストラップでConfigureRegionAdapterMappings()メソッドを(私のブートストラップがMefBootstrapperから継承)オーバーライドしています。ここでのコード:「ToolBarRegionAdapterは」0引数を取るコンストラクタが含まれていません:
protected override RegionAdapterMappings ConfigureRegionAdapterMappings()
{
RegionAdapterMappings regionAdapterMappings = base.ConfigureRegionAdapterMappings();
regionAdapterMappings.RegisterMapping(typeof(ToolBar), new ToolBarRegionAdapter());
return regionAdapterMappings;
}
私はこのエラーを取得するコンパイル。実際には真実ですが、コンストラクタはIRegionBehaviorFactoryをとりますが、私のコードにそのオブジェクトはありません。しかし、私が見た例では、リージョン・アダプターは引数なしでインスタンス化されています。 理由は何ですか?ありがとう!
おかげ@Haukingerでなければなりません。出来た。しかし、私はここでいくつかのビットとpeacesを理解していない(申し訳ありません、私は非常にプリズムに新しいです)。 **質問1 **:ServiceLocatorは、どのような種類のオブジェクトのインスタンスを取得できる「ボックス」ですか? ; **質問2 **: "コンストラクタインジェクション"とは何ですか? **質問3 **:なぜ私のケースでコンストラクタインジェクションができないのですか? – chincheta73
広告1)kind-of、yes、prismは、使用されるコンテナにアクセスするための共通サービスロケータを設定します。したがって、Container.Resolve '。ad 2)コンストラクタインジェクションとは、コンストラクタパラメータとして依存関係を持つことを意味し、コンポーネントはコンポーネントがコンポーネントによって呼び出された場合にのみコンテナが呼び出されます。ad 3) Container.Resolve' – Haukinger
ServcieLocatorを使用しないでください。直接コンテナを使用してください。http://brianlagunas.com/create-a-custom-prism-regionadapter/ –