2017-04-03 62 views
0

大約30年前,我開發了一款新鮮水果包裝機的大型應用程序。我遵循了一個很好的範例,取自Informix-4GL:同一屏幕允許用戶設置「通過示例查詢」或插入新的「記錄」,或者在成功之後更新其中的一個。它保留了一個「最新列表」(由此產生的查詢結果和添加的新記錄),可以使用PgUp和PgDwn Keys進行劃分。當然,所有這些東西都被表示爲映射文本。 非常重要的是,屏幕一直處於空閒狀態,直到用戶執行「命令」來啓動新的查詢,插入或更新(甚至是刪除)操作。 現在,該發展該應用了。 我在Wpf及其預覽*路由事件組中,想抓住主要用戶的「命令」。 但是因爲有很多屏幕(對於數據庫中的每個實體都有一個屏幕),設置它們之間的共同點很重要。 這是最好的方式(Wpf)爲這種方法設置一個或兩個「超類」的Windows? TIAWpf Window「super class」

+0

如果原始應用程序位於Informix-4gl中,並且您正在尋求「發展該應用程序」,爲什麼不使用某些工具,例如Genero還有其他的,這將允許你的應用發展到現代環境(GUI/Web/Mobile等)? –

回答

1

從技術上講,您可以創建一個繼承自System.Windows.Window的類,讓您的應用程序中的所有窗口都繼承該類,並在該類中實現一些公共邏輯。

但是,這種方法並不被認爲是WPF和其他基於XAML的平臺的最佳實踐。您的窗口和其他GUI類只應包含特定於演示文稿的代碼。處理數據庫查詢的模型類不應該依賴於用於呈現這些模型的確切GUI。

雖然不是必需的,但第三方MVVM庫對於例如爲IDE提供設計時模型。至於特定的圖書館,最近我更喜歡Caliburn Micro,在此之前我對MVVM Light有過正面的經驗。

對於MVVM,可以使用一些基本模型類,並在不同模型類中使用一些常見邏輯。事實上,許多圖書館都鼓勵你這樣做。他們爲您的模型提供他們自己的基類。如來自Caliburn Micro的Screen或PropertyChangedBase。

+0

謝謝你的提示。我正在嘗試Caliburn.Micro。 – marcelo

+0

我越來越瘋狂,試圖編譯Caliburn.Micro的樣本。它有很多我沒有安裝的c#6.0代碼。一些表達式可能很容易規避,但沒有其他表達方式。我會放棄。 – marcelo

+0

這件事情嚴重嗎?爲了克服6.0的限制,我下載了6.02版本之前的2.02版本。圖書館沒有提交投訴,但我拿的第一個樣本有錯誤。 – marcelo