上篇介绍了Region的基本应用,这篇接上篇,继续介绍关于Region的相关应用—RegionAdapter
1.预先实现映射关系RegionAdapterMappings
RegionAdapterMappings对Control和RegionAdapter做了一个映射,这个映射是在Bootstrapper引导程序中完成的.
protected virtual RegionAdapterMappings ConfigureRegionAdapterMappings() { RegionAdapterMappings regionAdapterMappings = Container.TryResolve<RegionAdapterMappings>(); if (regionAdapterMappings != null) { regionAdapterMappings.RegisterMapping(typeof(Selector), this.Container.Resolve<SelectorRegionAdapter>()); regionAdapterMappings.RegisterMapping(typeof(ItemsControl), this.Container.Resolve<ItemsControlRegionAdapter>()); regionAdapterMappings.RegisterMapping(typeof(ContentControl), this.Container.Resolve<ContentControlRegionAdapter>()); } return regionAdapterMappings; }
这里提供了三种控件支持,在上篇也有交代.RegionAdapter必须实现IRegionAdapter接口
2.在注册Region时寻找RegionAdapter
<StackPanel cal:RegionManager.RegionName="MainRegion"/>
以上的定义是错误的,因为在RegionAdapterMappings无法找到StackPanel和RegionAdapter的映射关系.以上附加属性的设置会尝试执行以下代码
protected virtual IRegion CreateRegion(DependencyObject targetElement, string regionName) { // Build the region IRegionAdapter regionAdapter = this.regionAdapterMappings.GetMapping(targetElement.GetType()); IRegion region = regionAdapter.Initialize(targetElement, regionName); return region; }
为了支持StackPanel,我们可以尝试为StackPanel定义一个实现IRegionAdapter的区域适配器.
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索container
, StackPanel
resolve
泰坦之旅汉化补丁v2.7、太空旅客v2、傲斗遮天v2.3天帝之名、傲斗凌天v2.3怖冰之末、沉沦之城v2.3.1攻略,以便于您获取更多的相关知识。
时间: 2024-12-23 22:49:44