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