Artykuł będzie poświęcony zmianom klawiatury w Windows Phone 7 oraz polu hasła.
Ten artykuł będzie skupiony na klawiaturze w Windows Phone 7. Chciałbym opisać, w jaki sposób zmieniać klawiaturę w zależności od danych, które chcesz wprowadzać w polu tekstowym. Dodatkowo omówię pole hasła oraz sposób jego dopasowywania do własnych potrzeb. Na końcu artykułu będzie zamieszczony przykładowy kod źródłowy.
Wspaniała sekretna porada dotycząca emulatora
Słyszałem, że wielu ludzi narzeka, że nie może używać ich własnej fizycznej klawiatury podczas programowania aplikacji dla Windows Phone 7. Kończy się to tym, że za każdym razem osoby te wyklikują myszką całe słowa, co niezwykle bardzo spowalnia testowanie aplikacji i wydłuża czas programowania. Jednakże jest prosty sposób na zaradzenie temu problemowi. Wciśnij jedynie klawisz Pause/Break na klawiaturze (lub Ctrl + PgUp). Dzięki temu od tej pory będziesz mógł przełączać się między klawiaturą emulatora a fizyczną.
Typ klawiatury
Każde pole tekstowe oraz hasła posiada możliwość przypisania typu klawiatury. Nie jest to wymagane, ale wykorzystując to sprawisz lepsze wrażenie na użytkowniku. Dla przykładu są tutaj dwie takie same klawiatury:

Oczywiście to nie są dokładnie te same klawiatury, ale mało trzeba, by sprawić, aby ukazały się one naszym oczom. Oto przykładowy kod dla dwóch pól tekstowych:
<TextBox Height="100" />
<TextBox InputScope="TelephoneNumber" Height="100" />
Dzięki wykorzystaniu typów klawiatury możemy dać naszym użytkownikom klawiaturę, która w pełni spełnia oczekiwania naszych użytkowników. Na przykład, gdy prosimy użytkownika o wprowadzenie numeru telefonu to powinniśmy dać mu klawiaturę alfanumeryczną. Poniżej przedstawię kilka innych przykładów.
URL
Ta klawiatura dodaje przycisk „.com” by w łatwy sposób zakończyć adresy www. Przycisk ten po dłuższym przytrzymaniu ukazuje również pozostałe końcówki domen: „.net”, „.org”, „.edu”, and „.co.uk”. Bardzo poręczne.
Number
Włącza standardową klawiaturę numeryczną z pominięciem literowej.

Text
Można zauważyć, że pojawiła się ikonka z uśmiechem na dole klawiatury. Kliknięcie jej powoduje przeniesienie do sporej ilości emotikonek. Idealne do SMS-ów.

TelephoneNumber
To jeden z przykładów, który był na górze. Wyświetla panel numeryczny zamiast klawiatury tekstowej.

EmailNameOrAddress
Podczas wpisywania adresów e-mail używasz głównie trzech rzeczy, które są uniwersalne. Nazwę, znak „@” oraz końcówkę domeny, np. „.com”, „.net”. Są one dodane do głównej klawiatury w tym typie.

Czas wziąć się do pracy
Zapewne zauważyłeś, że kiedy wpiszesz InputScope=”” w TextBox to nie dostaniesz listy wszystkich typów klawiatury, które są dostępne dla Ciebie. Jednak, jeśli używasz innej składni (bardziej rozwlekłej), to możesz wyświetlić całą listę:
<TextBox Height="75">
<TextBox.InputScope>
<InputScope>
<InputScopeName NameValue="Bopomofo" />
</InputScope>
</TextBox.InputScope>
</TextBox>

Jeśli jesteś ciekawy, Bopomofo to oficjalny system fonetyczny do transkrypcji języka chińskiego, szczególnie mandaryńskiego. To było zbyt śmieszne aby nie użyć tego w tym poście :P Poniżej jest pełna lista wszystkich typów klawiatury:

Uruchamianie klawiatury Windows Phone z poziomu kodu
Czasami zaistnieje potrzeba ukazania klawiatury użytkownikowi także wtedy, gdy nie łączysz jej z polem tekstowym. Jest prawdopodobnie wiele sposobów obejścia tego, ale wg mnie najporęczniejszej z nich jest następujący (Jeśli szukasz powodów do użycia tego, to pomyśl o grze Wisielec. Nie chcę zawsze wyświetlać klawiatury, ale także nie chcę pola tekstowego na ekranie.):
- Dodaj Button do twojej aplikacji.
- Dodaj TextBox, ale upewnij się, że jest on schowany przed użytkownikiem (Visibility na Hidden). Albo umieść go poza ekranem, spraw, żeby był przezroczysty (zmieniająć Background na Transparent) lub inną metodą, która ukruje go przed użytkownikiem.
- Dodaj obsługę zdarzenie Click dla Button.
- Wewnątrz metody wywołaj metodę Focus() dla ukrytego TextBox.
- To wszystko! Możesz zobaczyć, że pojawiła się klawiatura bez wyświetlenia pola tekstowego.
W kodzie zamieszczonym na końcu artykułu zamieściłem specyficzny przykład przypadku użycia.
PasswordBox
Chodź może to nie odpowiednie miejsce, ale chciałbym chwilę opisać temat pól hasła.
Po pierwsze, użytkownik po kliknięciu przycisku na klawiaturze ma jednosekundowe opóźnienie zanim zostanie wyświetlony „mroczny” znak. Zapewne niejednokrotnie się z tym spotkałeś, ale nie myślałeś o tym. Dla przykładu, jest to czas między zmianą znaku na znaki kulki lub gwiazdki w przeglądarce internetowej.
Po drugie, możesz dostosować Twój „mroczny” znak. Jeśli wolisz, aby były to znaki zapytania lub inny specyficzny znak ze specyficznej czcionki, możesz to w prosty sposób zmienić. Zmień tylko właściwość PasswordChar.
<PasswordBox x:Name="PassBox" PasswordChar="?" />