复杂的向导模式

时间:2011-11-10 13:39:01

标签: c# winforms wizard

我正在尝试为我的多向导软件设计一个sceleton,但却找不到一个好的解决方案。我所有的人都太复杂丑陋了。我使用NET CF和WinForms。

我有很多观点:ViewA,ViewB,ViewC,ViewD等,每个视图都有按钮“后退”,“下一步”和“取消”

这些视图由下面的向导使用,每个向导都有输入pont和end point,也可以取消。

WzrdA: -> ViewA <-> ViewB <-> ViewC ->
WzrdB: -> ViewB <-> ViewD -> 
WzrdC: -> ViewC <-> ViewD -> 

最后,向导与工作流程相结合:

WfA: ViewMain (start WfA) -> WzrdA -> WzrdB -> WzrdC -> back to ViewMain
WfB: ViewMain (start WfB) -> WzrdA -> WzrdC -> back to ViewMain

所以,我有单个主视图,有两个按钮“Start WfA”和“Start WfB”,在这种情况下工作流程“WfB”,例如,必须显示以下视图:

 -> ViewA <-> ViewB <-> ViewC ->   ViewC <-> ViewD -> 

该序列描述了后退/下一个按钮,如果按下取消按钮,则必须立即将其移动到主视图。

有没有人知道这个问题的明确而好的解决方案?

1 个答案:

答案 0 :(得分:2)

以下概念(来自您的帖子)通常违反DRY,SRP和OOP:

  

每个视图都有“后退”,“下一步”和“取消”按钮

对于向导框架,您通常会有一个托管这些按钮的父视图。应该有一个管理页面集合的控制器(LinkedList&lt;&gt;看起来很自然)并根据您的流逻辑将页面加载到父页面中。

我在这里描述的一般架构适合MVC。 Check it out

更多:您的向导容器可以是一个表单(带有可调整大小的面板来托管页面),但您的页面需要是自定义控件,以便您可以在父级中托管它们。