我正试图为我的多向导软件设计一个框架,无法找到一个很好的解决方案。我所有的尝试都太复杂和丑陋。我使用。NET CF和WinForms。
我有多个视图:ViewA, ViewB, ViewC, ViewD等,每个视图都有按钮"后退","下一步"one_answers"取消"
这些视图被下面的向导使用,每个向导都有入口点和结束点,也可以取消。
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
所以,我有一个单一的主视图,两个按钮"开始WfA"one_answers"开始WfB",在这种情况下,工作流"WfB",例如,必须显示以下视图:
-> ViewA <-> ViewB <-> ViewC -> ViewC <-> ViewD ->
该序列描述了后退/下一步按钮,如果取消按钮被按下,它必须立即移动到主视图。
有谁知道这个问题的一个清晰而好的解决方案吗?以下概念(来自您的帖子)通常违反DRY, SRP和OOP:
每个视图都有"后退"、"下一步"one_answers"取消"按钮
对于一个向导框架,你通常会有一个单一的父视图来承载这些按钮。应该有一个控制器来管理页面集合(LinkedList<>看起来很合适),并根据您的流逻辑将页面加载到父页面。
我在这里描述的通用架构适合MVC。看一看
>