什么是区域(Region)?
在理解这个之前,首先需要了解一下,在最常见的开发模式当中,我们去设计某个页面的时候,实际上界面元素在设计的时候已经被固定。
举个简单的例子,当我们设计以下页面时,它包含了Header、MenuContent。
因此我们可以为这个页面设计一些元素,例如:
1.Menu可以放置ListBox
2.Content可以放置一个ContentContrhttp://www.cppcns.comol
3.Header可以放置一些ToolBar
注:Textblock用于演示相应区域的控件。在实际开发中,我们经常使用各种控件。
auto"/>
auto"/>
B1">
10"FontSize="30"Text="Header"/>
10"FontSize="30"Text="Menu"/>
宝哥软件园und="#948CC0">
10"FontSize="30"Text="Content"/>
那么,回到Region主题,在Prism当中,一个页面我们可以不再为其固定显示的内容,而这种概念变成了区域(Region)划分的概念。
将页面显示的区域划分称N个Region,此时,每个Region将变成了动态分配区域。它将负责我们的UI组件或控件。
定义Region
可以使用XAML或代码创建定义Region
RegionManager.RegionName(XAML) RegionManager.SetRegionName(Code)
RegionManager功能
维护区域集合 提供对区域的访问 合成视图 区域导航 定义区域
定义Region步骤
Region示例
当我们为界面的元素指定了区域名称(XAML或者代码的方式),下一步则是通过IRegionManager接口实例设置对应的区域显示内容。
在该示例当中,我们创建了3个模块,然后注册在当前的页面当中,分别为Header、Menu、Content。如下所示:
运行后,界面将显示由三个模块组成的页面,如下:
注意事项
细心的网友可能已经看到了,上面的代码中,为3个ContentControl注册了TzVslCCk对应的区域,然后显示3个自定义的控件。
那么,是不是同样可以在其它控件元素上注册Region?
是的,在Prism中,控件支持Region注册,但有些控件需要实现RegionAdapters(区域适配器)
什么是Regionhttp://www.cppcns.comAdapters?
假设在应用程序的某个区域,需要显示我们定义的视图,这个时候实际上利用了RegionAdapter。
这类负责将我们定义的视图传输到指定的Region中。
Prism提供了许多内置得RegionAdapter
ContentControlRegionAdapter
ItemsControlRegionAdapter
SelectorRegionAdapter
-ComboBox -ListBox -Ribbon -TabControl
注:除此之外,如果想要实现控件作用域Region,则必须创建自己的自定义Region,因为一旦你不这么做,则会引发异常。
创建CustomRegionAdapter
首先,我们在这里创建一个类,然后继承于RegionAdapterBase,下面我们创建了一个基于StackPanel的自定义适配器。
下面,我们需要重写其中的CreateRegion方法。
CreateRegion方法返回一个IRegion接口,这里我们可以创建基于一下三种类型的区域类型。
SingleActiveRegion AllActiveRegion Region
然后,还需要重写其中的Adapt方法。
最后一步,我们需要在PrismApplication当中,注册我们创建好的自定义适配器,如下所示。
到此这篇关于WPF框架Prism中区域Region用法的文章就介绍到这了。希望能够给大家提供帮助。今后想要了解软件教程就关注宝哥软件园!