このリンクhttp://compositewpf.codeplex.com/discussions/250892で説明されているように、ツールバーのカスタム領域アダプターを実装しました。次のエラーが表示されます:「ToolBarRegionAdapter」には、0 引数を取るコンストラクターが含まれていません。ここに私のコード:
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;
}
};
}
}
Bootstrapper の ConfigureRegionAdapterMappings() メソッドをオーバーライドしました (Bootstrapper は MefBootstrapper を継承しています)。ここにコード:
protected override RegionAdapterMappings ConfigureRegionAdapterMappings()
{
RegionAdapterMappings regionAdapterMappings = base.ConfigureRegionAdapterMappings();
regionAdapterMappings.RegisterMapping(typeof(ToolBar), new ToolBarRegionAdapter());
return regionAdapterMappings;
}
コンパイルすると、次のエラーが表示されます。「ToolBarRegionAdapter」には、0 引数を取るコンストラクターが含まれていません。実際には、コンストラクターは IRegionBehaviorFactory を取りますが、コードにそのオブジェクトがありません。しかし、私が見た例では、リージョン アダプタは引数なしでインスタンス化されています。理由はありますか?ありがとう!