(翻译)UIP Application Block学习系列 ( 九 ) UIP Application Block的元素--图形导航器(Graph Navigator)
2007-09-07 14:12
459 查看
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.)
你可以调用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.)
相关文章推荐
- (翻译)UIP Application Block学习系列 ( 八 ) UIP Application Block的元素
- 翻译西川善司3D游戏技术系列【LOSTPLANET2】图形讲座(上)
- (翻译)UIP Application Block学习系列 ( 七 ) UIP Application Block的设计
- (翻译)UIP Application Block学习系列(一)欢迎学习User Interface Process Application Block
- (翻译)UIP Application Block学习系列(二)谁将学习这个文档
- (翻译)UIP Application Block学习系列 ( 四 ) UIP Application Block的设计目标
- HTML参考系列(2)-图形元素标签
- (翻译)UIP Application Block学习系列(三)UIP概念
- (翻译)UIP Application Block学习系列 ( 五 ) UIP Block的特性
- Stage3D 翻译系列之五:何为AGAL(Adobe 图形汇编语言)
- (翻译)UIP Application Block学习系列 ( 六 ) UIP Application Block术语表
- 原创翻译:James Whittaker系列——Google是如何测试的(4)
- [iTyran翻译]OpenGL ES 从零开始系列08:交叉存取顶点数据
- AJAX解惑篇 (外文翻译作品,ajax解惑系列之一)
- 原创翻译:James Whittaker系列——Google是如何测试的(3)
- 4.Swift教程翻译系列——Swift基本运算符
- 【XML系列】----DTD中的元素定义
- LoadRunner函数中文翻译系列之二--Check(转帖)
- iPhone之Quartz 2D系列--图形上下文(2)Graphics Contexts
- Storm【0.9.3】-官方翻译 系列 3:常用的一些基本命令