31天學(xué)會(huì)Windows Phone 7開發(fā):輸入范圍和文本框
本文專門討論Windows Phone 7的鍵盤,作者將講解如何使用鍵盤顯示你想要的字符。還會(huì)討論密碼框(PasswordBox),以及如何自定義它們。文章最后包含了一個(gè)代碼示例。
極棒的模擬器技巧
我聽到過(guò)很多人抱怨他們不能使用電腦鍵盤來(lái)開發(fā)Windows Phone 7的應(yīng)用程序。他們只能點(diǎn)擊鍵盤上的每一個(gè)按鍵,這使得他們開發(fā)和測(cè)試效率都下降了。這兒有一個(gè)能使用你電腦鍵盤的簡(jiǎn)便方法。在你的電腦鍵盤上按下Pause/Break鍵。它可以讓你在模擬器的屏幕鍵盤以及電腦的物理鍵盤之間切換。
輸入范圍(InputScope)
每個(gè)文本框和密碼框都有對(duì)輸入范圍賦值的能力。這不是必須的,但通過(guò)它們可以使用戶的感受更加友好。例如,下面兩個(gè)都是Windows Phone 7的鍵盤:
很明顯它們不是相同的鍵盤,你只需要做一點(diǎn)兒事情就可以使它們呈現(xiàn)出來(lái)。下面是使兩個(gè)文本框彈出上述鍵盤的XAML代碼:
- <TextBox Height="100" />
- <TextBox InputScope="TelephoneNumber" Height="100" />
通過(guò)使用InputScope屬性,我們可以給用戶最合適的鍵盤以滿足他們的需求。例如,如果我們需要鍵入一個(gè)電話號(hào)碼,要是彈出一個(gè)字母鍵盤就不合適了。下面列舉了一些其他值:
URL
這個(gè)鍵盤為你提供了一個(gè)“.com”按鈕來(lái)完成URL的輸入,如果長(zhǎng)按那個(gè)鍵它便會(huì)展開并向你顯示.net, .org, .edu。非常方便。
Number
這個(gè)輸入范圍值跳過(guò)了字母鍵盤,直接提供標(biāo)準(zhǔn)的數(shù)字鍵盤。
Text
在底部你會(huì)看到一個(gè)精致的笑臉。點(diǎn)擊它你會(huì)看到很多表情符號(hào),發(fā)短信的完美拍檔!
TelephoneNumber
這是上面的例子之一。為用戶提供數(shù)字撥號(hào)盤而不是字母鍵盤。
EmailNameOrAddress
在寫郵件時(shí),通常我們會(huì)做3件事兒。一個(gè)前綴,一個(gè)@符號(hào),一個(gè)頂級(jí)域名(Top-Level Domain),像.com或.net。在這個(gè)輸入范圍值中鍵盤已經(jīng)包含了所有這些內(nèi)容。
讓智能感知奏效
你可能注意到了在鍵入文本框的InputScope=””時(shí)并沒(méi)有可用的輸入范圍值的列表彈出。如果在語(yǔ)法上做細(xì)微調(diào)整(可能會(huì)略長(zhǎng)一些)你就能看到整個(gè)列表。像如下這樣做:
- <TextBox Height="75">
- <TextBox.InputScope>
- <InputScope>
- <InputScopeName NameValue="Bopomofo" />
- </InputScope>
- </TextBox.InputScope>
- </TextBox>
你可能很好奇,注音符號(hào)是滿清時(shí)中文的官方發(fā)音體系,但本文不會(huì)深究這個(gè)用不到的詞。下面是你能在智能感知中看到的輸入范圍的值:
通過(guò)代碼啟動(dòng)Windows Phone 7的鍵盤
有時(shí)候你想讓你的用戶輸入信息,但你不想向他們呈現(xiàn)一個(gè)實(shí)際的文本框。有很多方法來(lái)實(shí)現(xiàn),但我喜歡用最方便的一個(gè)來(lái)實(shí)現(xiàn)。(如果你正在搜索為什么要這么做,想想Hangman這個(gè)游戲。我不想讓鍵盤總顯示,但也不想在屏幕上放置一個(gè)文本框。)
1.在頁(yè)面中放置一個(gè)按鈕。
2.在頁(yè)面中放置一個(gè)文本框,但請(qǐng)確保它是在用戶視線之外的任何一個(gè)不顯示在屏幕中的位置,將它設(shè)為完全透明(設(shè)為絕對(duì)背景),或者用其他方法把它加入到視覺(jué)樹中,但不要讓用戶看到它。
3.在按鈕上添加一個(gè)Click的事件處理程序當(dāng)它被點(diǎn)擊時(shí)通過(guò)Focus方法將焦點(diǎn)賦給隱藏的文本框。
4.好了!這就可以使你在用戶看不到文本框的情況下展開鍵盤了。
下面的代碼示例中包含了這個(gè)例子。
密碼框
密碼框用不著說(shuō)太多內(nèi)容,但有一些小問(wèn)題我想你應(yīng)該知道。
第一,在你按下鍵盤直到它變?yōu)橐粋€(gè)“晦澀的符號(hào)”這個(gè)過(guò)程中會(huì)有1至2秒的延遲。你以前肯定遇到過(guò)這種情況,但可能從沒(méi)想過(guò)。例如,在瀏覽器中輸入字符,它們變?yōu)閳A點(diǎn)兒或星號(hào)時(shí)。
第二,你可以設(shè)定這些“晦澀字符”!如果你喜歡使用問(wèn)號(hào),或者特定的字符特定的字體,都是可以的。只要指定PasswordChar屬性即可。來(lái)看一下:
- <PasswordBox x:Name="PassBox" PasswordChar="?" />
輸入范圍,文本框和密碼框的代碼示例
下一篇,我們會(huì)談?wù)?strong>加速器,以及如何從設(shè)備中這個(gè)優(yōu)秀的感應(yīng)器上收集數(shù)據(jù)。
原作者:Jeff Blankenburg 譯者:金山崟霸
中文來(lái)源:http://www.cnblogs.com/porscheyin/archive/2010/12/22/1914151.html
英文來(lái)源:http://www.jeffblankenburg.com/2010/10/10/31-days-of-windows-phone-day-10-inputscope-textboxes/