我正在重寫基於Windows窗體的應用程序,我打算使用WPF。 該應用程序嚴重依賴拖放技術,在一個非常圖形化的環境中。通過將元素拖放到網格上,將它們移動,右鍵單擊設置屬性等,將所有這些內容都保存到數據庫中,從而使用「設計」報告等。同時通過繪製流程圖來控制程序流程,包括路由和製作,全部在表單上繪製,然後再保存到數據庫中。要MVVM或不要MVVM這是問題
MVVM是否適用於這種應用程序,或者我是否試圖在一個方孔中安裝一個圓釘。
您的想法是appriciated。
我正在重寫基於Windows窗體的應用程序,我打算使用WPF。 該應用程序嚴重依賴拖放技術,在一個非常圖形化的環境中。通過將元素拖放到網格上,將它們移動,右鍵單擊設置屬性等,將所有這些內容都保存到數據庫中,從而使用「設計」報告等。同時通過繪製流程圖來控制程序流程,包括路由和製作,全部在表單上繪製,然後再保存到數據庫中。要MVVM或不要MVVM這是問題
MVVM是否適用於這種應用程序,或者我是否試圖在一個方孔中安裝一個圓釘。
您的想法是appriciated。
我的意思是使用MVVM,但不是宗教上的。
我的意思是,在你的視圖中使用一個模型,但在需要時使用一些代碼(拖動&拖放,雙擊)。找到一個可以幫助你的發展的平衡點,而不會讓你感到瘋狂
MVVM很適合WPF。你可以使用WPF和MVVM進行拖放嗎?你當然可以。嘗試搜索「WPF拖放行爲」
如果您正在尋找長期的應用程序主管和可測試性,確保您可以使用MVVM和WPF來完成這些工作。或者只是去與WPF。 MMVM初始學習曲線非常陡峭。
謝謝,我認爲混合物是爲了。儘量堅持使用MVVM原則命令,綁定和數據庫處理,但有一些代碼後面處理更復雜的用戶界面交互。 – Tim 2009-11-23 10:38:03
有兩個真的很好的理由去與MVVM:
正如幾個海報所述,任何與UX有關的事件都可以用代碼方式處理,後面,但您應該通過視圖模型公開和訪問(讀取和寫入)數據,以便在視圖中輕鬆綁定。
至於我在#2中提到的額外的努力,你可以很容易的靜態屬性添加到您的應用程序對象,以確定是否在應用程序運行與視圖在Blend被打開。如果View在Blend中打開,則利用模擬數據而不是進行數據訪問調用。這裏有一些示例代碼,用於檢查Blend是否打開視圖:
if (Application.Current == null || Application.Current.GetType() == typeof(Application))
{
isInDesignMode = true;
}
else
{
isInDesignMode = false;
}
希望這會有所幫助。
感謝您的回覆。我對Blend不熟悉。學習Blend,WPF和MVVM原則可能會有很大的學習曲線。 – Tim 2009-11-23 10:15:08
像MVVM這樣的模式是爲了讓生活更簡單。所以對於任何情況,如果你覺得模式讓你很難,可以隨意打破它或嘗試其他的東西。盲目追隨任何事情都無濟於事。但無論如何,MVVM也支持拖放等複雜的UI交互,我相信行爲可以幫助你做到這一點。在谷歌上搜索WPF拖動&拖放行爲,你可以找到很多教程和代碼來幫助你。
謝謝,我認爲混合物是有序的。儘量堅持使用MVVM原則命令,綁定和數據庫處理,但有一些代碼後面處理更復雜的用戶界面交互。 – Tim 2009-11-23 10:38:56