2012-03-12 81 views
1

我正在研究一個用C#編寫的小應用程序。 GUI由XAML/WPF組成。 沒有什麼奇特的。用戶輸入一些設置,按下按鈕並等待事情發生。然而,隨着應用程序在過去幾周的增長,代碼變得越來越糟糕。真的很可怕。在我認爲他們不屬於的地方進行修復。它正在慢慢成爲可維護性的地獄。而且這個應用程序在不久的將來還會增長很多。與GUI通信

我非常想重構這個更成熟,可維護的代碼。如果不是更好的代碼和設計應用程序。

因爲用戶必須知道的東西是實際發生的事情,我打算增加一個狀態欄,顯示一些重要的東西沒有真正的方法,使用戶至少有一些想法發生了什麼。

現在,我應該如何去做這件事。我的gui實例化一些對象,然後實例化其他對象。我可以通過應用程序傳遞對gui窗口的引用,但這只是骯髒的。你們推薦什麼?

我一直在尋找到MVVM了一下,但我不知道這是我需要什麼。任何幫助?

回答

4

可以肯定,你需要MVVM把一切爲了,但你面對的是共同學習的過程。

閱讀儘可能多地瞭解MVVM和OOP(專注於OOP,如果你不掌握了很多),直到你覺得你寫的代碼很舒服使用它(你可能需要一些年來獲得到那個級別)。

你有一個驚人的道路在你面前。

1

MVVM確實是一種構建代碼以提高可維護性的方法。我現在已經使用它一段時間了,這是一種非常自然的,低阻抗的方式,可以將一些代碼構建在一起,分解關注點。

另請注意,您也可能使MVVM變得醜陋。它仍然歸結爲在代碼級別遵循一些體面的做法。

保持遍歷代碼,直到感覺就像是你不害怕讓別人看的東西。

0

是的,MVVM是一種解決方案。

一般情況下,你可能會認爲Observer pattern和事件。它可以幫助您啓用任何對象來通知他們不知道的GUI。

0

你可以使用MVVM解決耦合問題是的。

有了適當的數據和綁定,你可以有狀態留在你的繁重類。

您可以使用一個布爾值,只是表示它是否正在工作,或添加描述狀態的字符串,或可空類型的結果,您可以使用一個轉換器測試,等等

在MVVM Light中 - http://mvvmlight.codeplex.com/ - 您還有一個Messenger工具,可以用另一種方式解決問題。你會播放重型升降機的狀態變化,而不會關心誰在聽(脫鉤)。這種模式有幾個名稱和變體(觀察者,訂閱,信號,...)