2011-11-10 34 views
0

我想爲我的多向導軟件設計一個sceleton,並找不到一個好的解決方案。我所有的嘗試都太複雜和難看。我使用NET CF和WinForms。複雜的嚮導模式

我觀看次數:ViewA,ViewB,ViewC,ViewD等,每個視圖具有按鈕「後」,「下一個」和「取消」

這些視圖是由如下面的嚮導時,每個嚮導有入口蓬和終點,也可以取消。

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 

所以,我在這種情況下,工作流程「WFB」有兩個按鈕單主視圖「開始WFA」和「開始WFB」,爲例如,具有顯示如下的觀點:

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

該序列描述後/下一個按鈕,如果取消按下buttun它必須立即轉移到主視圖。

有沒有人知道這個問題的明確和很好的解決方案?

+0

你用什麼樣的集合來包含嚮導的「頁面」? –

+0

我對視圖,嚮導和工作流之間的關係感到困惑。這是否意味着如果我運行WfA,我會看到(擴展出奇才 - > views):ViewA,ViewB,ViewC,ViewB,ViewD,ViewC,ViewD?它們是相同的表單/模板,只是用來顯示不同的數據,還是我實際上一遍又一遍地看到相同的東西? – gregmac

回答

2

下面的概念(從您的文章)違反DRY,SRP和OOP一般:

每個視圖具有按鍵 「返回」, 「下一步」 和 「取消」

對於嚮導框架通常會擁有一個承載這些按鈕的單一父視圖。應該有一個管理頁面集合的控制器(LinkedList <>看起來很合適),並根據流程邏輯將頁面加載到父頁面中。

我在這裏描述的通用架構適合MVC。 Check it out

更多:您的嚮導容器可以是表格(帶有可調整大小的面板來承載頁),但你的頁面需要進行定製控件,以便您可以在父收留他們。