Windows Phone 7 InputScope ordbok

Et fint triks i Windows Phone 7 er at du kan velge en annen tastaturlayout på skjermen avhengig av dine behov. Slik du gjør dette er ved å spesifisere en InputScope-verdi for TextBox-kontrollen. Men, hvordan vet du hvilken verdi du skal bruke? Navnene er nyttige, men det er fremdeles vanskelig å si hvilken du trenger. Skal du for eksempel bruke "sifre" eller "nummer" som input? Jeg har akkurat tingen å hjelpe deg. Ved å skrive et program som viser alle InputScopeNameValue i aksjon, har vi kunnet sammenstille en tabell over hvordan hver layout ser ut.

For å gjøre dette laget jeg en enkel applikasjon. Jeg opprettet en ListBox-kontroll med en datamal som hadde en TextBlock og en TextBox. TextBlock-innholdet og TextBoxs InputScope-verdi var begge bundet til en variabel. Deretter, i skjermens konstruktør, regnet jeg opp navnene i InputScopeNameValue enum og lagde en liste over navnene. Koden for å gjøre oppregningen ble gitt av Chris Eargle. Jeg spøkte med ham om at metoden for å telle en enum var utelatt fra Compact Framework, og noen minutter senere hadde han litt løsningskode.

Det er flere ting du må huske på om bordet:

  • Oppsettene kan alltid endres; layouter som er de samme i dag, kan være forskjellige i morgen når oppdateringer for telefonen kommer. Forsikre deg om at du bruker den rette til jobben selv om de ser utskiftbare.
  • Tabellen viser utseende, men ikke funksjonalitet. Det er mulig at noen oppsett med samme utseende har forskjeller i funksjonalitet.
  • Noen oppsett ser nesten like ut, bortsett fra mindre forskjeller. For eksempel har en layout en annen "Return" -tast som gjør det klart at å skyve den "tar en handling" i stedet for å legge inn et nytt linjetegn.

Her er utdraget av XAML jeg brukte for å få ListBox på skjermen:

Dette er koden i koden bak filen for å fylle ListBox:

 private void loadInputScopeItems () 

{

var scopeNames = from item in typeof (InputScopeNameValue) .GetEnumValues ​​()

ordreby vare

velg nytt InputScopeItem {InputScopeName = item};

inputScopeItems.ItemsSource = scopeNames;

}

Her er utvidelsesmetoden til Type-klassen som Chris ga meg for å tillate oppregningen:

 offentlig statisk IEnumerable GetEnumValues ​​(denne typen) 

{

if (! type.IsEnum)

{

avkastningsbrudd;

}

var felt = type.GetFields (BindingFlags.Public | BindingFlags.Static);
 foreach (FieldInfo-felt i felt) 

{

avkastningsfelt. Navn;

}

}

Kjører denne applikasjonen i emulatoren, la meg sette sammen dette diagrammet som viser hvordan hver InputScope ser ut på skjermen.

AddressCity, AddressCountryName, AddressCountryShortName, AddressStateOrProvince, Date, DateDayName, DateMonthName, PersonalFullName, PersonalGivenName, PersonalMiddleName, PersonalNamePrefix, PersonalNameSuffix, PersonalSname, Text

Adresse Street, CurrencyAmount, CurrencyAmountAndSymbol, DateDay, DateMonth, DateYear, sifre, Number, PostalAddress, PostalCode, Time, TimeHour, TimeMinorSec

AlfanumericFullWidth, AlphanumericHalfWidth, Bopomofo, CurrencyChinese, Standard, EnumString, FileName, FullFilePath, Hanja, Hiragana, KatakanaFullWidth, KatakanaHalfWidth, LogOnName, NumberFullWidth, OneChar, Password, PhraseRgs, Private,

ApplicationEnd, Maps, Search (Merk: Dette oppsettet skiller seg fra forrige oppsett bare i presentasjonen av "Return" -knappen i nederste høyre hjørne.)

Chat ( Merk: Hovedtrekket i dette oppsettet er uttrykksikon-knappen nederst til venstre, noe som gir deg et utvalg av uttrykksikoner.)

EmailNameOrAddress, EmailSmtoAddress, EmailUserName, URL

NameOrPhoneNumber ( Merk: Denne utformingen skiller seg fra den forrige bare ved å bytte ut ".com" -tasten med en semikolontast.)

TelefonAreaCode, TelefonCountryCode, TelefonLocalNumber, PhoneNumber

Merk: Dette innlegget ble først publisert i TechRepublics Smartphones-blogg.

© Copyright 2020 | mobilegn.com