2014-11-17 15 views

risposta

0

Forms supporta un KeyboardFlags.Suggestion enum che presumo è destinato a controllare questo comportamento, ma non sembra essere molto ben documentato.

+1

non è molto utile, è .. e non sembra essere un membro 'Nessuno' .. – benpage

+0

@benpage La documentazione non sembra essere stata aggiornata, ma c'è un membro' Nessuno' ora. https://github.com/xamarin/Xamarin.Forms/blob/c1cf72080abbbc06571e5a64ef8777c35f7014f0/Xamarin.Forms.Core/KeyboardFlags.cs#L8 –

1

I KeyboardFlags dovrebbe farlo, qualcosa di simile a:

MyEntry.Keyboard = Keyboard.Create(KeyboardFlags.CapitalizeSentence | KeyboardFlags.Spellcheck); 
+0

può essere fatto in xaml? – Julien

+0

In un certo senso, sì. Dovrai creare risorse in modo programmatico in App.OnStart e raggiungerli come StaticResource, con binding. Aggiungerò una risposta tra un momento. – fonix232

+0

@Julien Vedere la mia risposta su come creare tastiere personalizzate usando solo XAML. –

1

Mentre c'è già una risposta, ho pensato di elaborare un po 'più su l'utilizzo in XAML.

A differenza del code-behind, non è possibile creare una nuova istanza della classe Keyboard da utilizzare, ma esiste un modo. Spero che tu sia già xaml-ified il tuo App.cs (rimuoverlo e creare App.xaml e App.xaml.cs), in questo modo non è necessario controllare se la proprietà delle risorse è stata ancora inizializzata.

Il passaggio successivo consiste nell'override del metodo OnStart() e aggiungere le voci corrette per le varie tastiere utilizzate. Di solito uso tre tastiere: numerico, e-mail e testo. Un'altra utile è la tastiera Url, ma è possibile aggiungerla allo stesso modo.

protected override void OnStart() 
{ 
    base.OnStart(); 
    this.Resources.Add("KeyboardEmail", Keyboard.Email); 
    this.Resources.Add("KeyboardText", Keyboard.Text); 
    this.Resources.Add("KeyboardNumeric", Keyboard.Numeric); 
} 

Questo piccolo codice renderà le tastiere disponibili come risorse statiche. Per utilizzarli in XAML, basta effettuare le seguenti operazioni:

<Entry x:Name="emailEntry" Text="{Binding EMail}" Keyboard="{StaticResource KeyboardEmail}" /> 

e voilà, la voce ora ha una tastiera e-mail.

+0

La creazione di risorse per membri statici non è necessaria. Vedi la mia risposta per i dettagli sull'attributo 'x: Static'. –

14

Le istanze personalizzate Keyboard possono essere create in XAML utilizzando l'attributo x:FactoryMethod. Che cosa hai intenzione può essere raggiunto con il seguente markup:

<Entry Text="{Binding Code}" Placeholder="Code"> 
    <Entry.Keyboard> 
    <Keyboard x:FactoryMethod="Create"> 
     <x:Arguments> 
     <KeyboardFlags>None</KeyboardFlags> 
     </x:Arguments> 
    </Keyboard> 
    </Entry.Keyboard> 
</Entry> 

KeyboardFlags.None rimuove tutte le funzioni speciali della tastiera dal campo.

Multiple enums può essere specificato in XAML separandoli con una virgola:

<KeyboardFlags>CapitalizeSentence,Spellcheck</KeyboardFlags> 

quando non hai bisogno di un costume Keyboard, è possibile utilizzare one of the predefined ones sfruttando l'attributo x:Static:

<Entry Placeholder="Phone" Keyboard="{x:Static Keyboard.Telephone}" /> 
+0

Sarebbe meraviglioso se questo potesse essere incorporato in uno stile? – wonea

Problemi correlati