EPR类企业管理系统

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


定制
QQ:460-3528

开发
QQ群:3360-90194

源码
微信:136-3650-3721

模板自定义

eXpressApp框架提供了内置的模板是适合大多数商务应用。默认情况下,这些模板用于生成UI。有时,您可能需要更改或替换模板中的某些内容,并且有几种方法可以执行此操作。由于WinForms和ASP.NET Web应用程序中模板创建的机制不同,因此与WinForms应用程序相比,ASP.NET Web应用程序提供了有限的模板自定义功能。本主题详细介绍两种平台的模板定制的所有方面。在移动应用程序中,不支持模板自定义。

WinForms模板

使用XafApplication.CreateTemplate方法创建模板。此方法由WindowFrame对象调用。模板类型使用调用者对象的Context属性确定,该属性在构造函数中初始化。下表列出了可用的上下文和相应的模板类型。

语境

范本

TemplateContext.ApplicationWindow

LightStyleMainForm

LightStyleMainRibbonForm

OutlookStyleMainRibbonForm

MainFormV2

MainRibbonFormV2

TemplateContext.View

DetailFormV2

详细信息RibbonFormV2

TemplateContext.PopupWindow

弹出表格

TemplateContext.LookupControl

LookupControlTemplate

TemplateContext.LookupWindow

查找表格

TemplateContext.NestedFrame

NestedFrameTemplateV2

将创建的Template分配给Window的Window.Template属性,然后使用其Frame.SetView方法将Window的View(请参阅Frame.View)分配给Template 。

要实现自定义模板,请使用模块项目。如果需要使用未在模块项目中实现的模板,则必须首先使用模板上的信息初始化类型信息子系统。为此,请将XafTypesInfo.Instance.FindTypeInfo方法调用添加到WinForms应用程序项目的Program.cs文件中的Program.Main方法,然后将自定义模板类型作为方法参数传递。

您可以通过从控件继承并实现IFrameTemplateIWindowTemplate接口来创建自定义模板。为了提供模板实施示例,eXpressApp Framework安装为每种模板类型提供了代码模板。要使用代码模板为您的应用程序创建模板,请调用模板库,然后从XAF WinForms模板类别中选择所需的代码模板。为新模板指定名称,然后按添加

TemplateGalery_WinForms

您可以在设计时或在代码中自定义添加的模板。若要查看基于功能区的模板的示例,请参考如何:创建自定义WinForms功能区模板主题。有关其他模板,请参考“如何:创建自定义WinForms标准模板”主题。请注意,XAF附带的所有内置模板都可以使用Visual Studio设计器进行完全自定义,并且您可以轻松添加自定义操作容器

要使用模板而不是默认模板,请处理XafApplication.CreateCustomTemplate事件,并在需要时返回Template的实例。下面的代码演示了这一点。

static class Program {
    //...
    public static void Main() {
        //...
        MySolutionWindowsFormsApplication application = new MySolutionWindowsFormsApplication();
        application.CreateCustomTemplate  = application_CreateCustomTemplate;
        // ...
    }
    static void application_CreateCustomTemplate(object sender, CreateCustomTemplateEventArgs e) {
        if (e.Context == TemplateContext.ApplicationWindow)
            e.Template = new MySolution.Module.Win.MyMainForm();
    }
}

您还可以在每次在特定上下文中创建模板时自定义模板。为此,以类似于CreateCustomTemplate事件的方式处理XafApplication.CustomizeTemplate事件(请参见上文)。

若要在为特定窗口(框架)创建模板时自定义模板,请处理Frame.TemplateChanged事件。在将模板分配给窗口(框架)后引发此事件。

ASP.NET Web模板

所有ASP.NET Web模板都是页面。这些页面(模板)是在客户端应用程序需要时创建的。然后,引发页面的Load事件。在事件处理程序中,将创建一个窗口,并创建一个视图并将其分配给该窗口。此后,将模板分配给窗口,将视图分配给模板。

为使用新样式和经典样式的应用程序提供了不同的模板集(请参见ASP.NET Web应用程序外观)。

内置模板被添加到XAF应用程序的ASP.NET Web应用程序项目中。默认模板内容是在DevExpress.ExpressApp.Web程序集中的用户控件上执行的,因此当您升级到新版本的XAF时,内容会自动更新。您可以将XAF页面内容添加到应用程序项目中,并对其进行必要的修改(请参阅如何:自定义ASP.NET模板)。要使用修改后的内容而不是默认内容,请打开Global.asax.cs(Global.asax.vb)文件并指定自定义用户控件的路径,如下所示。

protected void Session_Start(Object sender, EventArgs e) {
    // ...
    WebApplication.Instance.Settings.DefaultVerticalTemplateContentPath =
        "MyDefaultVerticalTemplateContent.ascx";
    WebApplication.Instance.Setup();
    WebApplication.Instance.Start();
}

在此代码中,DefaultVertical模板内容的路径被更改。使用WebApplication.Settings属性,可以使用更多指定其他模板内容路径的设置。

由于ASP.NET Web模板代表常规的Web窗体页面,因此您不需要处理XafApplication.CreateCustomTemplateXafApplication.CustomizeTemplate事件。

要自定义模板使用的JavaScript脚本,请处理WebWindow.CustomRegisterTemplateDependentScripts事件。

PopupWindowShowAction的弹出窗口模板

PopupWindowShowAction显示某个视图的弹出窗口。在WinForms应用程序中,根据是否包括“详细信息”视图或“列表视图” ,使用PopupFormLookupForm模板。在ASP.NET Web应用程序中,Dialog.aspx页用作模板。要自定义弹出窗口模板,请处理Action的PopupWindowShowAction.CustomizeTemplate事件,该事件在将模板分配给窗口之后发生。

相关文章

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