2014-11-17 31 views

Antwort

0

Forms unterstützt eine KeyboardFlags.Suggestion Enum, die ich nehme an, dieses Verhalten steuern soll, aber es scheint nicht sehr gut dokumentiert zu sein.

+1

es ist nicht sehr hilfreich, ist es .. und es scheint nicht zu sein ein 'None' Mitglied .. – benpage

+0

@benpage Die Dokumentation scheint nicht aktualisiert worden zu sein, aber es gibt jetzt ein' None' Mitglied. https://github.com/xamarin/Xamarin.Forms/blob/c1cf72080abbbc06571e5a64ef8777c35f7014f0/Xamarin.Forms.Core/KeyboardFlags.cs#L8 –

1

Die KeyboardFlags sollte es tun, so etwas wie:

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

kann dies in XAML getan werden? – Julien

+0

In gewisser Weise, ja. Sie müssen Ressourcen programmgesteuert in App.OnStart erstellen und sie als StaticResource mit Bindung erreichen. Ich füge sofort eine Antwort hinzu. – fonix232

+0

@Julien Siehe meine Antwort zum Erstellen von benutzerdefinierten Tastaturen nur mit XAML. –

1

Zwar gibt es bereits eine Antwort, ich dachte, dass ich ein bisschen weiter über die Nutzung in XAML erarbeiten würde.

Im Gegensatz zu Code-Behind können Sie keine neue Instanz der zu verwendenden Keyboard-Klasse erstellen, aber es gibt einen Weg. Hoffentlich haben Sie Ihre App.cs bereits manipuliert (entfernen Sie sie und erstellen Sie App.xaml und App.xaml.cs), so dass Sie nicht überprüfen müssen, ob die Resources-Eigenschaft bereits initialisiert wurde.

Der nächste Schritt besteht darin, die OnStart() -Methode zu überschreiben und die richtigen Einträge für die verschiedenen verwendeten Tastaturen hinzuzufügen. Ich verwende normalerweise drei Tastaturen: numerisch, E-Mail und Text. Ein weiterer nützlicher ist die Url-Tastatur, aber Sie können es auf die gleiche Weise hinzufügen.

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

Dieser kleine Code werden die Tastaturen als statische Ressourcen. Um sie in XAML zu verwenden, gehen Sie einfach die folgenden:

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

und voila, Ihr Eintrag hat jetzt eine E-Mail-Tastatur.

+0

Erstellen von Ressourcen für statische Mitglieder ist nicht erforderlich. Siehe meine Antwort für Details zum Attribut 'x: Static'. –

14

Benutzerdefinierte Keyboard Instanzen können in XAML mit dem Attribut erstellt werden. Was Sie wollen, können mit dem folgenden Markup erreicht werden:

<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 entfernt sämtliche Tastaturfunktionen aus dem Feld.

Multiple enums kann durch Trennen sie mit einem Komma in XAML angegeben werden:

<KeyboardFlags>CapitalizeSentence,Spellcheck</KeyboardFlags> 

Wenn Sie Keyboard eine benutzerdefinierte nicht brauchen, können Sie one of the predefined ones verwenden, indem Sie die Vorteile der x:Static Attribut unter:

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

Es wäre wunderbar, wenn das in einen Stil integriert werden könnte? – wonea

Verwandte Themen