天天看點

Silverlight中使用MVVM(3)—進階

這篇主要引申出command結合mvvm模式在應用程式中的使用

    我們要做出的效果是這樣的

    就是提供了一個簡單的查詢功能将結果綁定到datagrid中,在前面的基礎上,這個部分相對比較容易實作了

    我們在pageviewmodel中添加兩個屬性

這兩個屬性我們後面将綁定到view中,下面實作查詢方法

我們這裡就是通過查詢到的集合person指派給查詢結果,這兩步比較好了解,然後我們需要在viewmodel中聲明一個command對象來執行頁面的單擊事件

在構造函數中執行個體了command對象,在這裡我們仍然有一步工作需要完成,就是對querycommand的實作

你可以看出來command類是用viewmodel來執行個體的,自然這裡面由execute()完成查詢這個工作。

最後我們将ui上做點小小的變動

我們将datagrid的itemsource屬性綁定到resulttext上,對于輸入框我們則将其綁定到searchtext屬性上,這樣我們就完成了大部分的工作

下面就是将view和viewmodel兩者之間如何關聯了,因為sl3中不支援commnad這個屬性,是以這裡我們就在背景進行聲明

這一步完成後,我們就實作了開頭的功能,這個功能雖然實作了,但是你可能會發現一個問題,我們将searching()的執行寫在了querycommand.execute()中,

在這種情況下我們需要為每一個方法聲明一個command類,自然這不是我們期望做的事情,是以我們下面将這個問題優化一下:

我們先聲明一個relaycommand類

這裡relaycommand類可以作為一個派生類用于與頁面command的實作,那麼viewmodel中,我們聲明一個icommand屬性

自然我們需要将構造函數變動一下

通過第3行代碼,我們其實就是将viewmodel與command分離了,最後我們将button事件代碼修改一下

這樣的話,看起來似乎優雅了點,關于這部分内容網上資源也比較多,就不多解釋了。下篇我将結合mvvm與command實作一個簡單的crud操作

代碼下載下傳:sl3+vs2010