In this lesson, you will learn how to provide several customized variants of the same View, and allow an end-user to choose a desired View variant at runtime. Variants can be applied to both List Views and Detail Views. In this lesson, the Contact List View will be used. Two variants of this List View will be constructed via the Module Editor. To switch between these View variants, the special ChangeVariant Action will be used. To add this Action, the ViewVariants module will be referenced in the application.

在本课中,您将学习如何提供同一视图的多个自定义变体,并允许最终用户在运行时选择所需的视图变体。变体可以同时应用于"列表视图"和"详细信息视图"。在本课中,将使用联系人列表视图。此列表视图的两个变体将通过模块编辑器构造。要在这些视图变体之间切换,将使用特殊的更改变量操作。要添加此操作,将在应用程序中引用"查看变体"模块。

Note 注意
Before proceeding, take a moment to review the following lessons.
在继续之前,请花点时间复习以下课程。
  • Inherit from the Business Class Library Class (XPO/EF)
  • 从商务舱库类 (XPO/EF) 继承
  • Change Field Layout and Visibility in a List View
  • 在列表视图中更改字段布局和可见性
  • Add the View Variants module to your MySolution.Module project. Find the Module.cs (Module.vb) file in the MySolution.Module project displayed in the Solution Explorer, and double-click this file. The Module Designer will be invoked.

In the Toolbox, navigate to the DX.19.2: XAF Modules tab. Drag the ViewVariantsModule item from this tab to the Designer's Required Modules section.

  • 将"查看变体"模块添加到 MySolution.模块项目中。在解决方案资源管理器中显示的 MySolution.module 项目中查找Module.cs (Module.vb) 文件,然后双击此文件。将调用模块设计器。

在工具箱中,导航到 DX.19.2:XAF 模块选项卡。将"视图Variants模块"项目从此选项卡拖动到"设计器的必需模块"部分。

  • Rebuild your solution so that the changes made in the Module Designer are loaded to the Application Model.
  • Invoke the Model Editor for the MySolution.Module project. Right-click the Views node and select Add... | ListView.

  • 重新生成解决方案,以便将模块设计器中所做的更改加载到应用程序模型。

  • 调用 MySolution.模块项目的模型编辑器。右键单击"查看"节点并选择"添加..." |Listview。

For the new node, set the Id property to "Contact_ListView_AllColumns" and the ModelClass property to "Contact".

对于新节点,将 Id 属性设置为"Contact_ListView_AllColumns",将 ModelClass 属性设置为"联系人"。

  • Right-click the newly created node and select Generate content. Columns will be generated using information on the specified class (BOModel | Contact node) and its ancestors. Leave these columns as is. This List View will represent the complete variant for the Contact List View.
  • 右键单击新创建的节点并选择"生成内容"。将使用指定类上的信息生成列(BOModel |联系节点)及其祖先。保持这些列不变。此列表视图将表示联系人列表视图的完整变体。

  • Right-click the Views node and select Add... | ListView. For the new node, set the Id property to "Contact_ListView_Varied" and the ModelClass property to "Contact". Do not generate content for the new node.

  • 右键单击"查看"节点并选择"添加..." |Listview。对于新节点,将 Id 属性设置为"Contact_ListView_Varied",将 ModelClass 属性设置为"联系人"。不要为新节点生成内容。

Expand the newly added Contact_ListView_Varied node, right-click the Variants child node and select Add... | Variant.

展开新添加的Contact_ListView_Varied节点,右键单击变体子节点并选择"添加..." |变异。

For the new node, set the View property to "Contact_ListView", and set the Id and Caption properties to "Few columns".

对于新节点,将 View 属性设置为"Contact_ListView",并将 Id 和标题属性设置为"很少列"。

  • Right-click the Variants node and select Add... | Variant. For the new node, set the View property to "Contact_ListView_AllColumns", and set the Id and Caption properties to "All columns".

  • 右键单击变体节点并选择"添加..." |变异。对于新节点,将 View 属性设置为"Contact_ListView_AllColumns",并将 Id 和标题属性设置为"所有列"。

  • Navigate to the NavigationItems | Items | Default | Items | Contact node. Its View property, specifying the View displayed when choosing the Contact navigation item, is "Contact_ListView" by default. Change it to "Contact_ListView_Varied".

  • 导航到导航项 |项目 |默认值 |项目 |联系节点。默认情况下,其 View 属性(指定选择"联系人"导航项时显示的视图)为"Contact_ListView"。将其更改为"Contact_ListView_Varied"。。

  • Run the WinForms or ASP.NET application. Select the Contact item in the navigation control. For the displayed Contact List View, the ChangeVariant Action will be activated. This Action's items represent the view variants specified in the Model Editor.

  • 运行 WinForms 或ASP.NET应用程序。选择导航控件中的"联系人"项。对于显示的联系人列表视图,将激活"更改变量"操作。此操作的项表示模型编辑器中指定的视图变体。

    Note 注意
    You can use the Index property to specify the sort order of variants in the ChangeVariant Action drop-down list. Additionally, you can set the Current property of the Variants node to specify the default variant.
    可以使用 Index 属性在"更改变体操作"下拉列表中指定变体的排序顺序。此外,还可以设置变体节点的"当前"属性以指定默认变体。
  • Optionally, you can add view variants to the navigation control. For this purpose, invoke the Model Editor and set the GenerateRelatedViewVariantsGroup property of the NavigationItems node to true.

  • 或者,您可以将视图变体添加到导航控件。为此,调用模型编辑器,并将导航项节点的"生成相关视图VariantsGroup"属性设置为 true。

    Note 注意
    Ensure that the IModelChoiceActionItemChildItemsDisplayStyle.ChildItemsDisplayStyle property of the current navigation group node is set to List (see Change Style of Navigation Items). Otherwise, the view variants will not be added to the navigation control in the WinForms application.

    确保 IModelChoiceActionItemItem 显示样式.子项显示当前导航组节点的样式属性设置为"列表"(请参阅更改导航项的样式)。否则,视图变体将不会添加到 WinForms 应用程序中的导航控件中。

As a result, the Contact navigation item will expose child items for each view variant.

因此,"联系人"导航项将公开每个视图变体的子项。

You can see the changes made in this lesson in the Model Editor invoked for the Model.DesignedDiffs.xafml file, located in the Main Demo | MainDemo.Module project. The MainDemo application is installed in %PUBLIC%\Documents\DevExpress Demos 19.2\Components\eXpressApp Framework\MainDemo by default. The ASP.NET version is available online at http://demos.devexpress.com/XAF/MainDemo/

您可以在本课中为模型调用的模型编辑器中所做的更改。主演示模块项目。主演示应用程序安装在%PUBLIC%\Documents\DevExpress Demos 19.2\Components\eXpressApp Framework\MainDemo by default. The ASP.NET version is available online at http://demos.devexpress.com/XAF/MainDemo/

.

Provide Several View Variants for End-Users 为最终用户提供多个视图变体的更多相关文章

  1. shader 变体variants

    https://blogs.unity3d.com/cn/2018/05/14/stripping-scriptable-shader-variants/ variants涉及的是build时间和da ...

  2. pure::variants — 产品线变体管理工具

    pure::variants 是德国 pure-systems 公司的产品,其目的是帮助企业实现对产品线的变体管理,提高企业项目资产的复用效率.pure::variants 的核心理念是运用产品线管理 ...

  3. JavaWeb网上商城的反思

    不知道从什么时候起,我爱上了写博客,对之前学得的只是进行反思.写了几天课程设计,代码量量8.9千左右. 然后下面文字是我在博客上复制过来的,说得很详细 MVC(Model View Controlle ...

  4. Table View Programming Guide for iOS---(一)---About Table Views in iOS Apps

    About Table Views in iOS Apps Table views are versatile user interface objects frequently found in i ...

  5. Make a List View Editable 使列表视图可编辑

    In this lesson, you will learn how to make a List View editable. For this purpose, the DemoTask List ...

  6. Change Field Layout and Visibility in a List View 在列表视图中更改字段布局和可见性

    This lesson will guide you through the steps needed to select columns displayed in the List View. Fo ...

  7. Meet User Expectations---满足用户的期待

    Back to App Design Meet User Expectations OS X incorporates the latest technologies for creating gre ...

  8. XAF导航系统介绍

    Navigation System 导航系统 10 min to read 阅读时长10分钟 This topic introduces the concept of the navigation s ...

  9. 设计模式-Java版-全-附代码-超生动实例

    阅读推荐:设计模式-简单篇 项目地址:https://gitee.com/zwtgit/gof23 学习网站推荐: https://refactoringguru.cn/design-patterns ...

随机推荐

  1. ThinkPHP5——route(路由)的详解

    路由在框架中的作用打个比方的话,路由好比是WEB应用的总调度室,对于访问的URL地址,路由可以拒绝或者接受某个URL请求,并进行分发调度,而且还有一个副作用是因为路由规则可以随意定义,因此可以让你的U ...

  2. Erlang/Elixir精选-第2期(20191209)

    Spot The Discrepancies with Dialyzer for Erlang. 如何在大型Erlang项目中从零开始一步步践行Dialyzer. Which companies ar ...

  3. 第七章终结篇——8251A的总结

    总算把这个第七章复习完了,我把剩下一点关于8251A的发上来吧 本来在讲解8251A书本上还有关于RS232和串口通信的讲解,但是太浅了,就不放了,有兴趣的朋友可以自行参考其他文章 串行通信芯片825 ...

  4. Android 通知的基本用法

    一.概念 通知(Notification)是 Android 系统中比较有特色的一个功能,当某个应用程序希望像用户发送一些提示消息的时候,然而此时应用程序并不在前台运行,此时就可以借助通知来实现.发出 ...

  5. CoderForces-617B

    Bob has a favorite number k and ai of length n. Now he asks you to answer m queries. Each query is g ...

  6. Python必学之编译器用哪个好?你用错了吧!

    学python要知道怎么用好编译器.当我们编写Python代码时,我们得到的是一个包含Python代码的以.py为扩展名的文本文件.要运行代码,就需要Python解释器去执行.py文件由于整个Pyth ...

  7. 国内下载vscode速度慢解决

    找到对应的文件,点击下载,会出现一个类似下面的链接: https://az764295.vo.msecnd.net/stable/f06011ac164ae4dc8e753a3fe7f9549844d ...

  8. 【JS】380- JavaScript 正则新特性

    概括 如果你曾用 JavaScript 进行过复杂的文本处理操作,那么你将会喜欢 ES2018 中引入的新特性.本文将详细介绍第9版标准如何提高 JavaScript 的文本处理能力. 大多数编程语言 ...

  9. Django对DateTimeField时间字段查询QuerySet为空的解决方案

    今天在用的Django中的filter()方法对DateTimeField字段查询时碰到了问题,抓耳挠腮一下午,终于解决了,我觉得花了一下午的时间怎么着也得记录下吧(无语)...... 问题描述 : ...

  10. 分享一下HttpWatch pro 10.X 支持win10

    今天开始学Servlet,第一次安的是10的普通版,但发现功能太过简单不够学习使用,之后换了9的pro版本,发现单击"Record"按钮启动网络监听,会收到"ERROR_ ...