本文是“Windows Phone 7 開發 31 日談”系列的第10日。
本文專門討論Windows Phone 7的鍵盤。我將講解如何使用鍵盤顯示你想要的字元。還會討論密碼框(PasswordBox),以及如何自訂它們。文章最後包含了一個程式碼範例。
極棒的模擬器技巧
我聽到過很多人抱怨他們不能使用電腦鍵盤來開發Windows Phone 7的應用程式。他們只能點擊鍵盤上的每一個按鍵,這使得他們開發與測試效率都下降了。這兒有一個能使用你電腦鍵盤的簡便方法。在你的電腦鍵盤上按下Pause/Break鍵。它可以讓你在模擬器的螢幕小鍵盤以及電腦的物理鍵盤之間切換。
輸入範圍(InputScope)
每個文字框和密碼框都有對輸入範圍賦值的能力。這不是必須的,但通過它們可以使使用者的感受更加友好。例如,下面兩個都是Windows Phone 7的鍵盤:
很明顯它們不是相同的鍵盤,你只需要做一點兒事情就可以使它們呈現出來。下面是使兩個文字框彈出上述鍵盤的XAML代碼:
<TextBox Height="100" />
<TextBox InputScope="TelephoneNumber" Height="100" />
通過使用InputScope屬性,我們可以給使用者最合適的鍵盤以滿足他們的需求。例如,如果我們需要鍵入一個電話號碼,要是彈出一個字母鍵盤就不合適了。下面列舉了一些其他值:
URL
這個鍵盤為你提供了一個“.com”按鈕來完成URL的輸入,如果長按那個鍵它便會展開並向你顯示.net, .org, .edu。非常方便。
Number
這個輸入範圍值跳過了字母鍵盤,直接提供標準的數字鍵台。
Text
在底部你會看到一個精緻的笑臉。點擊它你會看到很多Emoji,發簡訊的完美拍檔!
TelephoneNumber
這是上面的例子之一。為使用者提供數字撥號盤而不是字母鍵盤。
EmailNameOrAddress
在寫郵件時,通常我們會做3件事兒。一個首碼,一個@符號,一個頂級網域名稱(Top-Level Domain),像.com或.net。在這個輸入範圍值中鍵盤已經包含了所有這些內容。
讓智能感知奏效
你可能注意到了在鍵入文字框的InputScope=””時並沒有可用的輸入範圍值的列表彈出。如果在文法上做細微調整(可能會略長一些)你就能看到整個列表。像如下這樣做:
<TextBox Height="75">
<TextBox.InputScope>
<InputScope>
<InputScopeName NameValue="Bopomofo" />
</InputScope>
</TextBox.InputScope>
</TextBox>
你可能很好奇,注音符號是滿清時中文的官方發音體系,但本文不會深究這個用不到的詞。下面是你能在智能感知中看到的輸入範圍的值:
通過代碼啟動Windows Phone 7的鍵盤
有時候你想讓你的使用者輸入資訊,但你不想向他們呈現一個實際的文字框。有很多方法來實現,但我喜歡用最方便的一個來實現。(如果你正在搜尋為什麼要這麼做,想想Hangman這個遊戲。我不想讓鍵盤總顯示,但也不想在螢幕上放置一個文字框。)
- 在頁面中放置一個按鈕。
- 在頁面中放置一個文字框,但請確保它是在使用者視線之外的任何一個不顯示在螢幕中的位置,將它設為完全透明(設為絕對背景),或者用其他方法把它加入到視覺樹中,但不要讓使用者看到它。
- 在按鈕上添加一個Click的事件處理常式當它被點擊時通過Focus方法將焦點賦給隱藏的文字框。
- 好了!這就可以使你在使用者看不到文字框的情況下展開鍵盤了。
下面的程式碼範例中包含了這個例子。
密碼框
密碼框用不著說太多內容,但有一些小問題我想你應該知道。
第一,在你按下鍵盤直到它變為一個“晦澀的符號”這個過程中會有1至2秒的延遲。你以前肯定遇到過這種情況,但可能從沒想過。例如,在瀏覽器中輸入字元,它們變為圓點兒或星號時。
第二,你可以設定這些“晦澀字元”!如果你喜歡使用問號,或者特定的字元特定的字型,都是可以的。只要指定PasswordChar屬性即可。來看一下:
<PasswordBox x:Name="PassBox" PasswordChar="?" />
輸入範圍,文字框和密碼框的程式碼範例
明天,我們會談談加速器,以及如何從裝置中這個優秀的感應器上收集資料。
原文地址:http://www.jeffblankenburg.com/post/31-Days-of-Windows-Phone-7c-Day-10-InputScope-TextBoxes.aspx
如果大家喜歡我的文章,請點擊“推薦”,謝謝!