這篇主要引申出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