商信互联
本主题介绍导航系统的概念并描述其基本功能。这篇文章将涵盖导航系统包括的构造块,以及它在内部的操作方式。本文档将介绍如何在设计时定义应用程序中的导航结构以及如何在代码中对其进行自定义。您将学习如何更改导航控件样式和自定义导航控件。本主题还将介绍上下文导航的概念。但是,上下文导航的示例实现不在本文档的范围内,并且在如何:实现自定义上下文导航主题中进行了描述。
XAF随附的FeatureCenter演示中演示了导航系统的功能。默认情况下,此演示位于%PUBLIC%\ Documents \ DevExpress演示19.2 \ Components \ eXpressApp Framework \ FeatureCenter文件夹中。
XAF应用程序的UI基本上由Views组成。视图是用于数据表示的抽象实体。视图有两种基本类型:用于表示单个对象及其属性的详细视图,以及用于表示对象集合的列表视图。典型的XAF应用程序可以包含许多视图,这些视图用于查看和编辑不同类型的对象。显然,应用程序的用户必须能够根据需要从一个视图切换到另一个视图。此功能由导航系统提供。导航系统在UI中由导航控件表示,该控件列出了所有可用的视图,并提供了激活所需视图的方法。
导航系统的主要部分是导航Action,导航Action Containers,ShowNavigationItemController和导航结构。
导航动作,导航动作容器和ShowNavigationItemController。代表主窗口的每个内置XAF模板均包含导航操作容器。此操作容器用于承载导航操作,该导航操作在UI中由导航控件表示。
导航操作容器由ShowNavigationItemController的导航操作填充。该控制器从应用程序模型中读取导航结构和导航控件样式设置,并相应地自定义导航控件。该控制器还将导航控件中的当前选定项目与当前活动的View同步。因此,即使以编程方式更改了视图,导航控件仍会突出显示正确的视图。
导航结构定义了不同视图之间的视觉关联。这种树形结构由应用程序模型的IModelRootNavigationItems节点定义。该节点由IModelNavigationItem节点组成。这些节点中的每个节点又可以具有任意数量的NavigationItem子节点。导航控件的项目根据导航结构进行排列。请注意,在移动应用程序中,不支持树状导航结构。仅显示默认根组的节点。
如果NavigationItem节点设置了IModelNavigationItem.View属性,则导航控件中的相应项目表示一个View。选择此类项目将激活视图。如果未设置View属性,则导航控件中的相应项目将充当“组”,其唯一目的是包含其他项目。
可以在设计时和在代码中定义和定制导航结构。
在代码中,可以通过两种方式定义和自定义导航结构。
通过将NavigationItemAttribute或DefaultClassOptionsAttribute应用于所需的业务类。该NavigationItem属性增加了导航项目的导航控制。最常用的构造方法采用单个字符串参数,该参数指定NavigationItems节点的第一级子节点。与业务类的“列表视图”相对应的NavigationItem节点将添加到指定的节点。应用DefaultClassOptions属性与应用NavigationItemAttribute本质上是相同的,外加某些其他属性。您可以在DefaultClassOptionsAttribute中了解更多信息 类说明。
第二种方法是直接自定义应用程序模型的NavigationItems节点,例如在自定义Controller中。在代码中访问应用程序模型主题中介绍了此方法。
在导航栏和手风琴样式中,即使指定了View属性,也不能使用组导航到View。这些组仅用作其他导航项目的容器。
下表说明了使用不同样式设置时XAF WinForms应用程序中导航控件的外观。
要将这种样式应用于WinForms应用程序,请将IModelRootNavigationItems.NavigationStyle属性设置为Accordion。
默认情况下,此样式在新的XAF WinForms应用程序中使用。
除了最后一个嵌套级别的节点以外的所有节点都显示了手风琴的组元素。
要将这种样式应用于WinForms应用程序,请使用以下设置:
一级子节点在导航窗格中显示为导航组,而第二级子节点则显示为一组图标。
要将这种样式应用于WinForms应用程序,请使用以下设置:
一级子节点在导航窗格中显示为导航组。每个组的内容显示为树形列表。
要将这种样式应用于WinForms应用程序,请将IModelRootNavigationItems.NavigationStyle属性设置为TreeList。
所有节点都显示为单个树列表。
要将这种样式应用于WinForms应用程序,请使用以下设置:
每个根导航组在Office导航栏中显示为NavigationBarItem,组内容显示为TreeList(当IModelChoiceActionItemChildItemsDisplayStyle.ChildItemsDisplayStyle属性设置为当前组的List且该组具有第二级子节点时)或作为NavBarItems(当当前组的ChildItemsDisplayStyle属性设置为LargeIcons时;仅显示第一级节点)。
如果需要进一步自定义导航控件的外观,则可以通过代码进行自定义。您可以实现自定义Controller并执行所需的自定义。该如何:访问导航控件包含描述导航控制的定制的例子。
下表说明了使用不同样式设置时ASP.NET应用程序中导航控件的外观。
若要将此样式应用于ASP.NET应用程序,请使用DefaultVerticalTemplateContentNew模板,并将IModelRootNavigationItems.NavigationStyle属性设置为NavBar。一级子节点在导航窗格中显示为导航组,而组内容显示为树形列表。
该IModelRootNavigationItems.ShowImages如果图标显示的项目和团体属性指定。另外,您可以在开始时使用IModelRootNavigationItemsWeb.ShowNavigationOnStart属性隐藏导航窗格。
若要将此样式应用于ASP.NET应用程序,请使用DefaultVerticalTemplateContentNew模板,并将IModelRootNavigationItems.NavigationStyle属性设置为TreeList。所有节点都显示为树形列表。
该IModelRootNavigationItems.ShowImages如果图标显示的项目和团体属性指定。另外,您可以在开始时使用IModelRootNavigationItemsWeb.ShowNavigationOnStart属性隐藏导航窗格。
若要将此样式应用于ASP.NET应用程序,请使用DefaultVerticalTemplateContent模板,并将IModelRootNavigationItems.NavigationStyle属性设置为NavBar。
一级子节点在导航窗格中显示为导航组,每个组的内容显示为树形列表。
若要将此样式应用于ASP.NET应用程序,请使用DefaultVerticalTemplateContent模板,并将IModelRootNavigationItems.NavigationStyle属性设置为TreeList。
所有节点都显示为单个树列表。
若要将此样式应用于ASP.NET应用程序,请使用DefaultTemplateContent模板。
一级子节点在导航窗格中显示为选项卡,第二级子节点显示为带有其自身标题的图标集。
本节说明了XAF Mobile应用程序中导航控件的外观。
此样式在XAF Mobile应用程序中使用,无法自定义。
一级子节点在“默认”根组中显示为带有标题的图标集。具有其子节点的其他根组将被忽略,并且不会显示。
默认情况下,不显示导航控件。您可以点击“汉堡包”按钮或向右滑动以显示此控件。如果您希望导航控件不隐藏在平板电脑设备上,请将TabletLayoutType属性设置为Split。
导航系统支持上下文导航。模块可以在导航控件中跟踪生成导航项的过程。该模块可以将其他子导航项添加到与特定条件匹配的已创建导航项中。三个内置模块实现了上下文导航-数据透视图,Reports V2和View Variants模块。
默认情况下,这些模块的上下文导航是禁用的。可以使用NavigationItems节点的以下属性启用它。
可以使用NavigationItems节点的以下属性来自定义这些上下文导航组的标题。
该ViewVariants模块添加视图变种对已预定视图的变体视图导航项。该分析和报告模块添加导航项目参与现有地质储量报告或分析对应于商业类的项目。
您还可以实现自定义上下文导航。要查看示例,请参考如何:实现自定义上下文导航主题。
在应用程序中使用“多文档界面”时,请按住SHIFT键并单击导航项以在单独的窗口而不是新选项卡中调用新视图。
当导航控件或导航组由树形列表控件表示时,可以使用箭头键进行导航。单击导航项未占用的树列表区域,以进入键盘导航模式。使用向上键和向下键在项目之间导航。要展开一个组项目,请按CTRL 向右键。要折叠组项目,请按CTRL 向左键。