WPF新手实践7:MVVM Light Toolkit(七、Messenger)
關(guān)鍵字:WPF .Net C# MVVM Light Toolkit 框架 Visual Studio 2010 VS2010 Expression Blend 4 入門(mén) 教程 新手 實(shí)踐
七、Messenger
一個(gè)用戶(hù)體驗(yàn)良好的登錄界面應(yīng)該能夠記錄最后一次登錄的用戶(hù)ID以避免無(wú)意義的重復(fù)輸入。為了實(shí)現(xiàn)這個(gè)功能,我將繼續(xù)對(duì)上一篇的登錄頁(yè)面進(jìn)行加工。
1、在LoginViewModel.cs中,再添加一個(gè)RelayCommand類(lèi)型的屬性LoadedCommand作為響應(yīng)View層頁(yè)面載入完成事件的Command對(duì)象,并在構(gòu)造函數(shù)中對(duì)其進(jìn)行初始化(PageLoaded()方法里涉及的兩個(gè)MoveInputFocusTo方法的具體實(shí)現(xiàn)稍后詳述)。
2、在Blend 4中,從“資產(chǎn)”頁(yè)簽的列表中選擇“行為”,將“EventToCommand”拖拽到[Page]上,把默認(rèn)名稱(chēng)改為PageLoaded。
3、將PageLoaded的Command屬性綁定到LoadedCommand(注意“屬性”頁(yè)簽中“觸發(fā)器”一欄的EventName要選擇Loaded),如下兩圖所示。
4、假設(shè)作為Model的User類(lèi)中有一個(gè)LoadLastLoginInfo()方法會(huì)在每次構(gòu)造新的User對(duì)象時(shí)從配置文件中讀取上一次成功登錄的用戶(hù)ID,那么作為View層的LoginPage就需要根據(jù)用戶(hù)ID的輸入框是否有值來(lái)決定輸入焦點(diǎn)究竟是應(yīng)該落在用戶(hù)ID輸入框還是密碼輸入框??墒遣徽撃姆N輸入框,都沒(méi)有一個(gè)可以用來(lái)綁定到ViewModel層的屬性來(lái)標(biāo)識(shí)該元素應(yīng)當(dāng)獲得輸入焦點(diǎn)。如果想這么做,必須要調(diào)用該元素的Focus()方法。問(wèn)題出現(xiàn)了:我不想讓ViewModel層知道是哪種界面元素需要獲得輸入焦點(diǎn)。為了避免View層和ViewModel層的耦合太緊,我需要用MVVM Light Toolkit的Messenger來(lái)解除它們之間的強(qiáng)引用。首先,創(chuàng)建一個(gè)新的類(lèi)MoveLoginInputFocusMessage,其中包含一個(gè)string類(lèi)型的屬性InputFieldName。
5、在LoginViewModel.cs中,實(shí)現(xiàn)PageLoaded()方法里涉及的兩個(gè)MoveInputFocusTo方法(消息發(fā)送者)。
6、在LoginPage.xaml.cs中,修改LoginPage的構(gòu)造函數(shù),注冊(cè)消息接收者并提供MoveLoginInputFocus()方法作為具體實(shí)現(xiàn)。
編譯通過(guò)。
轉(zhuǎn)載于:https://www.cnblogs.com/phoenixtrees/archive/2011/05/10/2041921.html
總結(jié)
以上是生活随笔為你收集整理的WPF新手实践7:MVVM Light Toolkit(七、Messenger)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Erlang基础学习总结2
- 下一篇: 配置 Spring.NET