Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Hinweis
Dieses Buch wurde im Frühjahr 2016 veröffentlicht und seitdem nicht aktualisiert. Wenngleich ein großer Teil des Buchs weiterhin relevante Informationen liefert, sind einige Abschnitte veraltet, und einige Themen sind nicht mehr korrekt oder vollständig.
In diesem Kapitel werden acht View-Ableitungen besprochen, die eine Interaktion mit dem Benutzer ermöglichen.
Übersicht anzeigen
Xamarin.Forms enthält 20 instanziierbare Klassen, die von View abgeleitet werden, aber nicht von Layout. Sechs davon wurden in den vorherigen Kapiteln behandelt:
Label: Kapitel 2. Anatomie einer AppBoxView: Kapitel 3. Scrollen des StapelsButton: Kapitel 6. SchaltflächenklicksImage: Kapitel 13. BitmapsActivityIndicator: Kapitel 13. BitmapsProgressBar: Kapitel 14. AbsoluteLayout
Die acht Ansichten in diesem Kapitel gestatten dem Benutzer effektiv die Interaktion mit grundlegenden .NET-Datentypen:
| Datentyp | Ansichten |
|---|---|
Double |
Slider, Stepper |
Boolean |
Switch |
String |
Entry, EditorSearchBar |
DateTime |
DatePicker, TimePicker |
Sie können sich diese Ansichten als visuell interaktive Darstellungen der zugrunde liegenden Datentypen vorstellen. Dieses Konzept wird im nächsten Kapitel, Kapitel 16, näher erläutert. Datenbindung.
Die verbleibenden sechs Ansichten werden in den folgenden Kapiteln behandelt:
WebView: Kapitel 16. DatenbindungPicker: Kapitel 19. SammlungsansichtenListView: Kapitel 19. SammlungsansichtenTableView: Kapitel 19. SammlungsansichtenMap: Kapitel 28. Standort und KartenOpenGLView: Nicht in diesem Buch behandelt (und keine Unterstützung für Windows-Plattformen)
„Slider“ (Schieberegler) und „Stepper“ (Schritte)
Sowohl Slider als auch Stepper gestatten Benutzern die Auswahl eines numerischen Werts aus einem Bereich. Slider ist ein fortlaufender Bereich, während Stepper diskrete Werte umfasst.
„Slider“-Grundlagen
Slider ist eine horizontale Leiste, die einen Wertebereich von einem Mindestwert (links) bis zu einem Höchstwert (rechts) darstellt. Er definiert drei öffentliche Eigenschaften:
Valuevom Typdouble, der Standardwert ist 0.Minimumvom Typdouble, der Standardwert ist 0.Maximumvom Typdouble, der Standardwert ist 1.
Die bindbaren Eigenschaften, die diese Eigenschaften unterstützen, stellen sicher dass sie konsistent sind:
- Für alle drei Eigenschaften stellt die für die bindbare Eigenschaft angegebene
coerceValue-Methode sicher, dassValuezwischenMinimumundMaximumliegt. - Die
validateValue-Methode mitMinimumPropertygibtfalsezurück, wennMinimumauf einen Wert größer als oder gleichMaximumfestgelegt wird, und ähnliches gilt fürMaximumProperty. Die Rückgabe vonfalsevon dervalidateValue-Methode führt dazu, dass eineArgumentExceptionausgelöst wird.
Slider löst das ValueChanged-Ereignis mit einem ValueChangedEventArgs-Argument aus, wenn sich die Value-Eigenschaft programmgesteuert oder durch Manipulation von Slider durch den Benutzer ändert.
Im SliderDemo-Beispiel wird die einfache Verwendung von Slider veranschaulicht.
Häufige Probleme
Sowohl in Code als auch in XAML werden die Eigenschaften Minimum und Maximum in der von Ihnen angegebenen Reihenfolge festgelegt. Stellen Sie sicher, dass Sie diese Eigenschaften initialisieren, sodass Maximum immer größer als Minimum ist. Andernfalls wird eine Ausnahme ausgelöst.
Wenn Sie die Slider-Eigenschaften initialisieren, kann dies dazu führen, dass sich die Value-Eigenschaft ändert und dass das ValueChanged-Ereignis ausgelöst wird. Sie sollten sicherstellen, dass der Slider-Ereignishandler nicht auf Ansichten zugreift, die während der Seiteninitialisierung noch nicht erstellt wurden.
Das ValueChanged-Ereignis wird während der Slider-Initialisierung nur dann ausgelöst, wenn sich die Value-Eigenschaft ändert. Sie können den ValueChanged-Handler direkt im Code aufrufen.
Farbauswahl für „Slider“
Das RgbSliders-Programm enthält drei Slider-Elemente, mit denen Sie interaktiv eine Farbe auswählen können, indem Sie ihre RGB-Werte angeben:
Im TextFade-Beispiel werden zwei Slider-Elemente verwendet, um zwei Label-Elemente in einem AbsoluteLayout zu verschieben und dabei das eine in das andere überzublenden.
Der „Stepper“-Unterschied
Der Stepper definiert dieselben Eigenschaften und Ereignisse wie der Slider, aber die Maximum-Eigenschaft wird mit 100 initialisiert, und Stepper definiert eine vierte Eigenschaft:
Incrementvom Typdouble, initialisiert mit 1.
Visuell besteht dies Stepper aus zwei Schaltflächen mit bezeichnungen – und +. Drücken – verringert Value sich um Increment ein Minimum von Minimum. Drücken auf + erhöht Value um Increment bis auf ein Maximum von Maximum.
Dieser Vorgang wird im StepperDemo-Beispiel veranschaulicht.
„Switch“ (Schalter) und „CheckBox“ (Kontrollkästchen)
Switch ermöglicht dem Benutzer die Angabe eines booleschen Werts.
„Switch“-Grundlagen
Visuell besteht der Switch aus einer Umschaltfläche, die ein- und ausgeschaltet werden kann. Die Klasse definiert eine Eigenschaft:
IsToggledvom Typbool
Switch definiert ein Ereignis:
Toggled, begleitet von einemToggledEventArgs-Objekt, das ausgelöst wird, wenn sich dieIsToggled-Eigenschaft ändert.
Das SwitchDemo-Programm veranschaulicht den Switch.
Ein traditionelles Kontrollkästchen (CheckBox)
Manche Entwickler ziehen vielleicht ein traditionelleres CheckBox dem Switch vor. Die Bibliothek Xamarin.FormsBook.Toolkit enthält die CheckBox-Klasse, die von ContentView abgeleitet ist. CheckBox wird mit den Dateien CheckBox.xaml und CheckBox.xaml.cs implementiert. CheckBox definiert drei Eigenschaften (Text, FontSize und IsChecked) und ein CheckedChanged-Ereignis.
Dieses CheckBox wird im CheckBoxDemo-Beispiel veranschaulicht.
Eingabe von Text
Xamarin.Forms definiert drei Ansichten, in denen der Benutzer Text eingeben und bearbeiten kann:
Entryfür eine einzelne Textzeile.Editorfür mehrere Textzeilen.SearchBarfür eine einzelne Textzeile zu Suchzwecken.
Entry und Editor werden von InputView abgeleitet, die wiederum von View abgeleitet wird. SearchBar wird direkt von View abgeleitet.
Tastatur und Fokus
Bei Telefonen und Tablets ohne physische Tastaturen sorgen die Elemente Entry, Editor und SearchBar dafür, dass eine virtuelle Tastatur angezeigt wird. Das Vorhandensein dieser Tastatur am Bildschirm steht im Zusammenhang mit dem Eingabefokus. Für eine Ansicht müssen ihre beiden Eigenschaften IsVisible und IsEnabled auf true festgelegt sein, um den Eingabefokus zu erhalten.
Zwei Methoden, eine schreibgeschützte Eigenschaft und zwei Ereignisse sind am Eingabefokus beteiligt. Diese werden alle von VisualElement definiert.
- Die
Focus-Methode versucht, den Eingabefokus auf ein Element festzulegen, und gibt bei Erfolgtruezurück - Die
Unfocus-Methode entfernt den Eingabefokus von einem Element. - Die schreibgeschützte
IsFocused-Eigenschaft zeigt an, ob das Element den Eingabefokus hat. - Das
Focused-Ereignis zeigt an, wenn ein Element den Eingabefokus erhält. - Das
Unfocused-Ereignis zeigt an, wenn ein Element den Eingabefokus verliert.
Auswählen der Tastatur
Die InputView-Klasse, von der Entry und Editor abgeleitet werden, definiert nur eine Eigenschaft:
Diese zeigt den Typ der Tastatur an, die angezeigt wird. Manche Tastaturen sind für URIs oder Zahlen optimiert.
Mit der Keyboard-Klasse können Sie eine Tastatur mit einer statischen Keyboard.Create-Methode mit einem Argument vom Typ KeyboardFlags definieren, einer Enumeration mit den folgenden Bitflags:
None, auf 0 festgelegt.CapitalizeSentence, auf 1 festgelegt.Spellcheck, auf 2 festgelegt.Suggestions, auf 4 festgelegt.All, auf „\xFFFFFFFF“ festgelegt.
Bei Verwendung des mehrzeiligen Editor, wenn ein Absatz oder mehr Text erwartet wird, stellt das Aufrufen von Keyboard.Create einen guten Ansatz zur Auswahl einer Tastatur dar. Für den einzeiligen Entry sind die folgenden statischen, schreibgeschützten Eigenschaften von Keyboard nützlich:
DefaultTextChatUrlEmailTelephoneNumericfür positive Zahlen mit oder ohne Dezimaltrennzeichen.
Der KeyboardTypeConverter gestattet das Angeben dieser Eigenschaften in XAML, wie vom EntryKeyboards-Programm veranschaulicht.
„Entry“-Eigenschaften und -Ereignisse
Der einzeilige Entry definiert die folgenden Eigenschaften:
Textvom Typstring; der imEntryangezeigte Text.TextColorvom TypColorFontFamilyvom TypstringFontSizevom TypdoubleFontAttributesvom TypFontAttributesIsPasswordvom Typbool; bewirkt die Maskierung von Zeichen.Placeholdervom Typstringfür blass eingefärbten Text, der inEntryvor jeglicher Eingabe angezeigt wird.PlaceholderColorvom TypColor
Entry definiert außerdem zwei Ereignisse:
TextChangedmit einemTextChangedEventArgs-Objekt, das immer ausgelöst wird, wenn sich dieText-Eigenschaft ändert.Completed, das ausgelöst wird, wenn der Benutzer fertig ist und die Tastatur geschlossen wird. Der Benutzer zeigt die Fertigstellung auf plattformspezifische Weise an.
Im QuadraticEquations-Beispiel werden diese beiden Ereignisse veranschaulicht.
Der „Editor“-Unterschied
Der mehrzeilige Editor definiert dieselben Eigenschaften Text und Font wie Entry, aber nicht die anderen Eigenschaften. Editor definiert ferner dieselben zwei Eigenschaften wie Entry.
JustNotes ist ein Programm zum Erstellen von Freihandnotizen, das den Inhalt von Editor speichert und wiederherstellt.
Die „SearchBar“ (Suchleiste)
SearchBar wird nicht von InputView abgeleitet, weshalb sie keine Keyboard-Eigenschaft besitzt. Sie besitzt aber all die Eigenschaften Text, Font und Placeholder, die Entry definiert. Darüber hinaus definiert SearchBar drei zusätzliche Eigenschaften:
CancelButtonColorvom TypColorSearchCommandvom TypICommandzur Verwendung mit Datenbindungen und MVVM.SearchCommandParametervom TypObjectzur Verwendung mitSearchCommand.
Die plattformspezifische Schaltfläche „Abbrechen“ löscht den Text. Die SearchBar besitzt auch eine plattformspezifische Schaltfläche „Suchen“. Durch das Drücken einer der beiden Schaltflächen wird eins der beiden Ereignisse ausgelöst, die SearchBar definiert:
TextChanged, begleitet von einemTextChangedEventArgs-Objekt.SearchButtonPressed
Die SearchBar wird im SearchBarDemo-Beispiel veranschaulicht.
Datums- und Zeitauswahl
Die Ansichten DatePicker und TimePicker implementieren plattformspezifische Steuerelemente, die Benutzern das Angeben eines Datums oder einer Uhrzeit gestatten.
Die Datumsauswahl (DatePicker)
DatePicker definiert vier Eigenschaften:
MinimumDatevom TypDateTime, initialisiert mit 1. Januar 1900.MaximumDatevom TypDateTime, initialisiert mit 31. Dezember 2100.Datevom TypDateTime, initialisiert mitDateTime.Today.Formatvom Typstring, mit der .NET-Formatierungszeichenfolge initialisiert mit „d“, dem kurzen Datumsmuster, was zu einer Datumsanzeige wie „20.7.1969“ in Deutschland führt.
Sie können die DateTime-Eigenschaften in XAML festlegen, in dem Sie die Eigenschaften als Eigenschaftselemente ausdrücken und das kulturinvariante kurze Datumsformat verwenden („20.7.1969“).
Im DaysBetweenDates-Beispiel wird die Anzahl der Tage zwischen zwei vom Benutzer ausgewählten Daten berechnet.
Die Uhrzeitauswahl (TimePicker) (oder ist es eine Zeitraumauswahl (TimeSpanPicker)?)
TimePicker definiert zwei Eigenschaften und keine Ereignisse:
Timeist eher vom TypTimeSpanalsDateTime, was die seit Mitternacht verstrichene Zeit angibt.Formatvom Typstring, mit der .NET-Formatierungszeichenfolge initialisiert mit „t“, dem kurzen Uhrzeitmuster, was zu einer Uhrzeitanzeige wie „13:45“ in Deutschland führt.
Das SetTimer-Programm veranschaulicht, wie Sie TimePicker verwenden, um eine Uhrzeit für einen Timer anzugeben. Das Programm funktioniert nur, wenn Sie es im Vordergrund halten.
SetTimer veranschaulicht auch die Verwendung der DisplayAlert-Methode von Page zur Anzeige eines Warnfelds.
