我是新的MVVM模式。c#MVVM演示邏輯
該視圖有一個登錄按鈕和一個進度條。
我有一個名爲LoginViewModel的視圖模型,它公開命令LoginCommand並且連接到我的視圖LoginPage.xaml。
當執行登錄命令時,應該禁用登錄按鈕,並且進度條應該可見。
如果登錄失敗,則應啓用登錄按鈕並且應隱藏進度欄。
我不確定的是這個表示邏輯應該發生的地方。它應該發生在視圖模式還是頁面後面的代碼中?
目前我在視圖模型上有一個名爲LoggingIn的布爾屬性,它在登錄過程開始時設置爲true,如果失敗則設置爲false。該布爾值分別掛鉤到按鈕和進度條的IsEnabled和Visibility屬性。
這個毛病對我來說是錯誤的,所以我試着做了一些事件,OnBeginLogin和OnEndLogin,並將它們綁定在代碼控制控件的可視狀態的頁面後面的代碼中。然而,這比以前的解決方案需要更多的代碼。
我也儘管我可以公開視圖模型中特定於控件,LoginButtonEnabled和ProgressBarVisible的兩個屬性,以便我可以從視圖模型控制視覺狀態。但是如果我添加一個取消按鈕讓說,那麼我需要添加另一個名爲CancelButtonEnabled的屬性。
我認爲不應該在視圖模型中處理表示邏輯,所以添加事件似乎是最好的解決方案,但我想知道什麼是最佳實踐或標準/常用方法?
另外,當登錄成功時,應該將用戶返回到上一頁還是另一頁?是在視圖模型還是在頁面後面的代碼中處理?再次我覺得這不是視圖模型的東西,但我不確定。
感謝您的幫助。
是的,你完全正確的添加狀態另一個按鈕的新屬性。這就是爲什麼叫做ViewModel。 – Daniil 2013-03-24 21:03:22
您是否嘗試過使用DataTriggers在xaml中處理演示文稿邏輯?如果您有複雜的表示邏輯,則可以使用valueconverters來處理邏輯並返回DataTrigger可以理解的值。 – failedprogramming 2013-03-25 01:25:53