EPR类企业管理系统

在我们现有系统基础上或全新开发,提供定制服务
为您的企业高效快速实施ERP,WMS,MES,CRM管理系统
全面管控物料仓库、销售业务、采购业务、仓库业务
生产过程、质量检验、组织架构、业务报表


定制
QQ:460-3528

开发
QQ群:3360-90194

源码
微信:136-3650-3721

在Windows Forms应用程序中显示主窗口

本主题详细介绍了授权最终用户之后直到最终用户看到主窗口之前执行的步骤。与XAF应用程序中的任何其他窗口一样,主窗口由两个对象定义:一个称为Template的控件和一个称为Window的抽象实体。与模板相反,窗口不包含有关必须在其上放置哪些控件的信息。Windows仅在eXpressApp Framework应用程序中包含有关其功能的信息。在本主题中,您将学习如何创建和关联Window和Template对象以显示主窗口。

创建一个窗口

MainWindowWin1

阶段

干预方式

创建Window类的实例之前,应用程序模型的ActionDesign |中列出的所有Controller。Controllers节点已创建。

订阅Controller.AfterConstruction事件以设置Controller的属性。例如,您可以指定激活控制器要满足的条件。

然后,创建一个窗口,并且所有控制器都在该窗口中注册。这意味着它们的WindowController.Window属性设置为当前的Window对象。

订阅Controller.FrameAssigned事件以访问Controller的Window(请参见WindowController.Window)并对其执行所需的操作。例如,在事件处理程序中,您可以订阅激活Controller之前引发的事件。

代表WindowController类的后代的Controller被一个接一个地激活。

要仅激活主窗口的窗口控制器,请将其WindowController.TargetWindowType属性设置为MainAny

重写Controller的WindowChanging方法以取消激活。将一个项目添加到Controller.Active集合,并传递false作为该项目的value

订阅Controller.Activated事件。这是使用Controller执行所需功能的主要条目。

将模板分配给窗口

MainWindowWin2

阶段

干预方式

为了可视化,Window创建了Template,它是支持XAF架构的控件(例如,表单)。要创建模板,请使用框架模板工厂。它创建适合Window上下文的Template(请参见Frame.Context)。主窗口在“ ApplicationWindow”上下文中创建。默认情况下,用于创建模板的DefaultFrameTemplateFactory在“ ApplicationWindow”上下文中创建内置的MainForm模板。

订阅WinApplication对象的XafApplication.CreateCustomTemplate事件,以在“ ApplicationWindow”上下文中创建自定义模板。若要获取在其中创建模板的当前上下文,请使用事件处理程序的Context参数。若要查看示例,请参考模板自定义和如何:创建自定义WinForms功能区模板主题。

使用自定义框架模板工厂创建自定义模板。在实现自定义模板的模块中注册所需的框架模板工厂。在这种情况下,应将模块添加到应用程序以使用自定义模板。有关详细信息,请参阅“如何:使用模块分发自定义模板”主题。

创建模板时,还将创建其所有动作容器。操作容器是显示“操作”的控件。MainForm模板包含以下操作容器:关于,工具,文件,ObjectsCreation,打印,导出,退出,RecordEdit,RecordsNavigation,ViewsHistoryNavigation,FiltersSearch,过滤器,视图,选项,导航,诊断,ViewsNavigation。导航动作容器表示NavBarControl。其他动作容器表示BarLinkContainerExItem,其中一些为它们的动作创建工具栏项,另一些创建菜单项。

订阅WinApplication对象的XafApplication.CustomizeTemplate事件。要自定义为主窗口创建的模板,请使用事件处理程序的Context参数。必须将其设置为TemplateContext.ApplicationWindow。要查看示例,请参阅模板自定义主题。

创建的模板将分配给Window.Template属性。

创建动作控件

MainWindowWin3

阶段 干预方式
Window的TemplateChanged事件引发。此事件由已激活的FillActionContainersController处理,因为它表示窗口控制器。该TemplateChanged事件处理程序寄存器操作在窗口的模板的行动容器。每个Action是注册在其所在的应用模型的映射操作集装箱ActionDesign | ActionToContainerMapping节点。动作容器为其动作创建控件。 订阅Frame.TemplateChanged事件以访问窗口的模板及其操作容器。为此,请使用窗口控制器的Controller.Activated事件。要查看示例,请参考如何:访问导航控件主题。

设置模板的设置

MainWindowWin4

阶段

干预方式

调用模板的ISupportStoreSettings.SetSettings方法以应用最终用户上次运行应用程序时指定的设置。

默认情况下,模板的设置将保存到“应用程序模型”的“模板” | “模板”中。模板节点。您可以将它们保存到另一个“应用程序模型”节点。为此,请在WinApplication类中重写GetTemplateCustomizationModel方法,并在其中返回所需的节点。

您可以将模板的设置保存在其他商店中。为此,请实现一个自定义模板,该模板将覆盖IFrameTemplate接口公开的方法。

显示模板。

将视图分配给窗口

MainWindowWin5

阶段 干预方式
所述ShowNavigationItemController.ShowNavigationItemAction是如果某一项在导航栏选择作为执行。这将强制创建与“选定”项关联的视图。 要模仿导航控件中特定项的选择,请继承ShowNavigationItemController并重写其GetStartupNavigationItem方法。在此方法中,从ShowNavigationItem操作的Items集合中返回所需的项目。
创建的视图将分配给当前窗口。 订阅Frame.ViewChanging事件。您可以在Window Controller的Controller.Activated事件处理程序中或View Controller的Controller.FrameAssigned事件处理程序中执行此操作。

视图控制器已激活

主窗口Win6

阶段

干预方式

激活了Window的Frame.Controllers集合中的View Controllers 。

您可以使用以下属性来管理View Controller的激活:ViewController.TargetViewTypeViewController.TargetViewNestingViewController.TargetObjectTypeViewController.TargetViewId

重写Controller的ViewChanging方法以取消激活。将一个项目添加到Controller.Active集合,并传递false作为该项目的value

订阅Controller.Activated事件。这是使用Controller执行所需功能的主要条目。

将窗口的视图分配给模板

主窗口Win7

阶段 干预方式
视图被分配给当前窗口的模板。这将强制创建View的控件(请参见View.CreateControls)。将该控件添加到模板的ViewSite中。 处理View.ControlsCreatingView.ControlsCreated事件,以在创建表示UI中的View的控件之前和之后执行自定义操作。

转载保留此链接,注明出处