(翻译)UIP Application Block学习系列 ( 九 ) UIP Application Block的元素--图形导航器(Graph Navigator)
GraphNavigator类源自Navigator类,使用导航图在View之间进行导航。导航图通过View的列表封装了工作的流程功能允许传送(Navigation graphs encapsulate workflow functionality through a list of views and allowed transitions)。它们允许你检查在用户接口进程中哪个View存在并且为每个节点进行有效传送。导航图包含一个开始节点,一个结束节点和0或多个它们之间的节点。在开始和结束节点之间是简单的线性路径,或者包含分支和循环路径。下图一展示了导航图的例子:
你可以调用UIP Manager里的StartNavigationTask方法创建并开始一个图形导航器并且传递在配置文件里作为一个参数传递导航图的名字,如果导航器重新加载作业的话,连同作业信息也传过去。调用StartNavigationTask方法的时候,图形导航器确认作业,状态对象和状态持久提供者被创建。Controller告诉图形导航器它应该传递到哪个节点,这通过调用Navigate方法并传递一个节点名作为参数来实现。导航器在UIPConfigSettings类中检查导航图确保传送合法,如果不合法,生成一个异常。一个合法的节点也列出当前节点的子节点或者指定的共享传输。(A valid node is either listed as a child of the current node or specified in a shared transition.)
当使用UIP Application Block时,你在你的xml配置文件的<navigationGraph>部分中定义一个导航图。每个图的每一个节点元素对应一个View,节点元素包含<navigateTo>字元素,这就定义了指向不同的路径。下面的代码展示了图一中需要的xml。
<navigationGraph
iViewManager="WinFormViewManager"
name="Shopping"
state="State"
statePersist="SqlServerPersistState"
startView="cart">
<node view="cart">
<navigateTo navigateValue="resume" view="browsecatalog" />
<navigateTo navigateValue="checkout" view="checkout" />
<navigateTo navigateValue="fail" view="error" />
</node>
<node view="browsecatalog">
<navigateTo navigateValue="addItem" view="cart"/>
<navigateTo navigateValue="fail" view="error" />
</node>
<node view="error">
<navigateTo navigateValue="resume" view="cart" />
</node>
<node view="checkout">
<navigateTo navigateValue="passCheckout" view="congrats" />
<navigateTo navigateValue="failCheckout" view="checkout" />
</node>
<node view="congrats">
<navigateTo navigateValue="resume" view="browsecatalog" />
</node>
</navigationGraph>
在图形导航器中的共享传输
一个应用程序可能有这样一个View,图中的许多或者所有的节点都指向它。这些View被成为共享传输(Shared Transitions)。这个功能很有用,比如,你想所有的地方产生的错误都被发送到同一个页面上,或者你想显示一个一般的帮助页面。共享传输和重复指定navigateTo元素的效果相同。任何节点指定传输重写全局共享传输。(Any node-specific transitions override the global shared transitions.)
客户有用的软件。