我正在尝试为我的多向导软件设计一个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 ->
该序列描述了后退/下一个按钮,如果按下取消按钮,则必须立即将其移动到主视图。
有没有人知道这个问题的明确而好的解决方案?
答案 0 :(得分:2)
以下概念(来自您的帖子)通常违反DRY,SRP和OOP:
每个视图都有“后退”,“下一步”和“取消”按钮
对于向导框架,您通常会有一个托管这些按钮的父视图。应该有一个管理页面集合的控制器(LinkedList&lt;&gt;看起来很自然)并根据您的流逻辑将页面加载到父页面中。
我在这里描述的一般架构适合MVC。 Check it out
更多:您的向导容器可以是一个表单(带有可调整大小的面板来托管页面),但您的页面需要是自定义控件,以便您可以在父级中托管它们。