在 Bootstrapper.ConfigureRegionAdapterMappings 中註冊:
protected virtual RegionAdapterMappings ConfigureRegionAdapterMappings()
{
var mappings = Container.TryResolve<RegionAdapterMappings>();
if (mappings != null)
{
mappings.RegisterMapping(typeof(Selector), Container.Resolve<SelectorRegionAdapter>());
mappings.RegisterMapping(typeof(ItemsControl), Container.Resolve<ItemsControlRegionAdapter>());
mappings.RegisterMapping(typeof(ContentControl), Container.Resolve<ContentControlRegionAdapter>());
}
return mappings;
}
protected virtual IRegion CreateRegion(DependencyObject target, string regionName)
{
var adapter = RegionAdapterMappings.GetMapping(target.GetType());
return adapter.Initialize(target, regionName);
}
XAML 直接寫 <StackPanel cal:RegionManager.RegionName="MainRegion" /> 會失敗,因無對應適配器。需自訂 StackPanelRegionAdapter : IRegionAdapter 並註冊至映射表。