首先请在VS里打开下面的文件,我们将对源码分段进行说明:
View(视图):一个Function(功能)对应多个View(视图),本框架用View(视图)实现多窗体(MDI)的效果。 一个View(视图)由多个Area(域)组成,Area(域)是FrameForm上各个Region上的一个Panel。Area(域)下面再包含Zone(区)。
View的配置
请看Ligg.EasyWinApp-103-00-Ligg.EasyWinForm:View的配置
View的初始化
对于MultipleView
首先通过MergeViewItems从 .Applicationsxxxx(Apllication)ClientsFormFunctionsyyyy(Function) ViewsPublic(View).xml读取Public View的数据到_layoutElemets。然后Render,最后再设置Public View状态为Unchecked。当点击ViewMenuItem的时候, Checked的View会被隐藏;Public View是总是显示的View,其他View如果不是当前View,会被隐藏,所以Public View的状态永远是Unchecked。
对于SingleView
会把Zone的zoneLayoutElement“包装”成一条Public View 的数据,追加到layoutElemets,然后Render。
对于SingleView,不存在显示隐藏View的问题,所以也不用设置状态。
View的显示和隐藏
前文讲过:ViewMenuItem点击时会触发ViewMenuItemClickHandler,显示当前View 并隐藏前一个View。我们现在来看代码:
对于Simple类型的菜单项,如果已经Render过的View,则显示当前的View的ContentArea和ViewMenuArea,再隐藏前一个View的的ContentArea和ViewMenuArea;如果是如果没有Render过的View,则先读取、Render,再隐藏前一个View的ContentArea和ViewMenuArea。
对于Customized类型的菜单项,如果已经Render过的View,则显示当前的View的ContentArea,再隐藏前一个View的的ContentArea;如果是如果没有Render过的View,则先读取、Render,再隐藏前一个View的ContentArea。
Zone的控件如何生成、显示以及控件的动作,请看下一章节文档。