Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Uwaga
Ta książka została opublikowana wiosną 2016 roku i od tego czasu nie została zaktualizowana. Jest wiele w książce, która pozostaje cenna, ale niektóre materiały są nieaktualne, a niektóre tematy nie są już całkowicie poprawne ani kompletne.
W tym rozdziale omówiono osiem View pochodnych, które umożliwiają interakcję z użytkownikiem.
Przegląd widoku
Xamarin.Forms zawiera 20 wystąpień klas, które pochodzą z View klasy , ale nie Layout. Sześć z nich zostało omówionych w poprzednich rozdziałach:
Label: rozdział 2. Anatomia aplikacjiBoxView: rozdział 3. Przewijanie stosuButton: rozdział 6. Kliknięcia przyciskuImage: rozdział 13. Mapy bitoweActivityIndicator: rozdział 13. Mapy bitoweProgressBar: rozdział 14. Bezwzględna nakładka
Osiem widoków w tym rozdziale skutecznie umożliwia użytkownikowi interakcję z podstawowymi typami danych platformy .NET:
| Typ danych | Widoki |
|---|---|
Double |
Slider, Stepper |
Boolean |
Switch |
String |
Entry, , EditorSearchBar |
DateTime |
DatePicker, TimePicker |
Te widoki można traktować jako wizualne interaktywne reprezentacje bazowych typów danych. Ta koncepcja została omówiona bardziej w następnym rozdziale rozdział 16. Powiązanie danych.
Pozostałe sześć poglądów opisano w następujących rozdziałach:
WebView: rozdział 16. Powiązanie danychPicker: rozdział 19. Widoki kolekcjiListView: rozdział 19. Widoki kolekcjiTableView: rozdział 19. Widoki kolekcjiMap: rozdział 28. Lokalizacja i mapyOpenGLView: Nie omówiono w tej książce (i brak obsługi platform systemu Windows)
Suwak i krokowy
Zarówno Slider , jak i Stepper zezwala użytkownikowi na wybranie wartości liczbowej z zakresu. Jest Slider to ciągły zakres, podczas gdy Stepper element obejmuje wartości dyskretne.
Podstawy suwaka
Jest Slider to poziomy pasek reprezentujący zakres wartości od minimum po lewej stronie do maksymalnej po prawej stronie. Definiuje trzy właściwości publiczne:
Valuetypudouble, wartość domyślna 0Minimumtypudouble, wartość domyślna 0Maximumtypudouble, wartość domyślna 1
Właściwości, które są powiązane z tymi właściwościami, upewnij się, że są spójne:
- Dla wszystkich trzech właściwości metoda określona
coerceValuedla właściwości możliwej do powiązania gwarantuje, żeValuejest to międzyMinimumiMaximum. validateValueMetoda w funkcjiMinimumPropertyzwracafalsewartość , jeśliMinimumjest ustawiona na wartość większą lub równąMaximum, i podobną dla parametruMaximumProperty. ZwracaniefalsezvalidateValuemetody powoduje, że elementArgumentExceptionjest zgłaszany.
SliderValueChanged uruchamia zdarzenie z argumentemValueChangedEventArgs, gdy Value właściwość ulegnie zmianie programowo lub gdy użytkownik manipuluje elementem Slider.
W przykładzie SliderDemo pokazano proste użycie elementu Slider.
Typowe pułapki
Zarówno w kodzie, jak i w języku XAML właściwości Minimum i Maximum są ustawiane w określonej kolejności. Pamiętaj, aby zainicjować te właściwości, Maximum aby zawsze były większe niż Minimum. W przeciwnym razie zostanie zgłoszony wyjątek.
Inicjowanie Slider właściwości może spowodować zmianę Value właściwości i ValueChanged wyzwolenie zdarzenia. Upewnij się, że Slider program obsługi zdarzeń nie uzyskuje dostępu do widoków, które nie zostały jeszcze utworzone podczas inicjowania strony.
Zdarzenie ValueChanged nie jest uruchamiane podczas Slider inicjowania, chyba że Value właściwość ulegnie zmianie. Program obsługi można wywołać ValueChanged bezpośrednio z kodu.
Wybór koloru suwaka
Program RgbSliders zawiera trzy Slider elementy, które pozwalają interaktywnie wybrać kolor, określając jego wartości RGB:
Przykład TextFade używa dwóch Slider elementów, aby przenieść dwa Label elementy między elementami AbsoluteLayout i zanikać jeden do drugiego.
Różnica kroków
Definiuje Stepper te same właściwości i zdarzenia co Slider właściwość, ale Maximum właściwość jest inicjowana na 100 i Stepper definiuje czwartą właściwość:
Incrementtypudouble, zainicjowany do 1
Wizualnie element Stepper składa się z dwóch przycisków oznaczonych etykietami : i +. Naciśnięcie Value Increment — zmniejsza się do minimum .Minimum Naciśnięcie + Value Increment przycisku zwiększa się do maksymalnej wartości .Maximum
Jest to pokazane przez przykład StepperDemo.
Przełączanie i pole wyboru
Ustawienie Switch umożliwia użytkownikowi określenie wartości logicznej.
Podstawy przełączania
Wizualnie element Switch składa się z przełącznika, który można wyłączyć i włączyć. Klasa definiuje jedną właściwość:
IsToggledtypubool
Switch definiuje jedno zdarzenie:
Toggledwraz z obiektemToggledEventArgs, wyzwolony poIsToggledzmianie właściwości.
Program SwitchDemo demonstruje element Switch.
Tradycyjna skrzynka kontrolna
Niektórzy deweloperzy mogą preferować bardziej tradycyjną metodę CheckBox .Switch Biblioteka Xamarin.FormsBook.Toolkit zawiera klasę pochodzącą CheckBox z klasy ContentView. CheckBox jest implementowany przez pliki CheckBox.xaml i CheckBox.xaml.cs . CheckBox definiuje trzy właściwości (Text, FontSize, i IsChecked) i CheckedChanged zdarzenie.
Przykład CheckBoxDemo pokazuje ten element CheckBox.
Wpisywanie tekstu
Xamarin.Forms definiuje trzy widoki, które umożliwiają użytkownikowi wprowadzanie i edytowanie tekstu:
Entrydla pojedynczego wiersza tekstuEditordla wielu wierszy tekstuSearchBardla pojedynczego wiersza tekstu do celów wyszukiwania.
Entry i Editor pochodzą z InputViewklasy , która pochodzi z Viewklasy . SearchBar pochodzi bezpośrednio z Viewklasy .
Klawiatura i fokus
Na telefonach i tabletach bez klawiatur fizycznych Entryelementy , Editori SearchBar powodują wyskakujące okienko klawiatury wirtualnej. Obecność tej klawiatury na ekranie jest związana z fokusem wejściowym. Widok musi mieć zarówno jego właściwości, IsVisible jak i IsEnabled , aby true uzyskać fokus danych wejściowych.
Dwie metody, jedna właściwość tylko do odczytu i dwa zdarzenia są związane z fokusem wejściowym. Wszystkie te wartości są definiowane przez program VisualElement:
- Metoda
Focuspróbuje ustawić fokus danych wejściowych na element i zwracatruewartość w przypadku powodzenia - Metoda
Unfocususuwa fokus wejściowy z elementu - Właściwość
IsFocusedtylko do odczytu wskazuje, czy element ma fokus wejściowy - Zdarzenie
Focusedwskazuje, kiedy element pobiera fokus danych wejściowych - Zdarzenie
Unfocusedwskazuje, kiedy element traci fokus wejściowy
Wybieranie klawiatury
Klasa InputView , z której Entry i Editor pochodzą, definiuje tylko jedną właściwość:
Wskazuje to typ wyświetlanej klawiatury. Niektóre klawiatury są zoptymalizowane pod kątem identyfikatorów URI lub liczb.
Klasa Keyboard umożliwia zdefiniowanie klawiatury za pomocą metody statycznej Keyboard.Create z argumentem typu KeyboardFlags, wyliczenie z następującymi flagami bitowymi:
Noneustaw wartość 0CapitalizeSentenceustaw wartość 1Spellcheckustaw wartość 2Suggestionsustaw wartość 4Allustaw wartość \xFFFFFFFF
W przypadku używania wielowierszowego Editor , gdy oczekiwano akapitu lub większej liczby tekstu, wywołanie Keyboard.Create jest dobrym podejściem do wybierania klawiatury. W przypadku pojedynczego wiersza Entryprzydatne są następujące statyczne właściwości Keyboard tylko do odczytu:
DefaultTextChatUrlEmailTelephoneNumericdla liczb dodatnich z lub bez separatora dziesiętnego.
Umożliwia KeyboardTypeConverter określenie tych właściwości w języku XAML, jak pokazano w programie EntryKeyboards .
Właściwości i zdarzenia wpisu
Pojedynczy wiersz Entry definiuje następujące właściwości:
Texttypustring, tekst wyświetlany w obiekcieEntryTextColortypuColorFontFamilytypustringFontSizetypudoubleFontAttributestypuFontAttributesIsPasswordtypubool, co powoduje, że znaki mają być maskowanePlaceholdertypustring, dla przyciemnionego tekstu wyświetlanegoEntryprzed wpisaniem czegokolwiekPlaceholderColortypuColor
Definiuje Entry również dwa zdarzenia:
TextChangedz obiektemTextChangedEventArgs, wyzwalany za każdym razem, gdyTextwłaściwość ulegnie zmianieCompleted, wyzwolony po zakończeniu pracy użytkownika, a klawiatura zostanie odrzucona. Użytkownik wskazuje ukończenie w sposób specyficzny dla platformy
W przykładzie QuadraticEquations pokazano te dwa zdarzenia.
Różnica w edytorze
Wielowierszowy Editor definiuje te same Text właściwości i Font co Entry , ale nie inne właściwości. Editor Definiuje również te same dwie właściwości co Entry.
JustNotes to dowolny program do tworzenia notatek, który zapisuje i przywraca zawartość pliku Editor.
Pasek wyszukiwania
Obiekt SearchBar nie pochodzi z InputViewklasy , więc nie ma Keyboard właściwości . Ale ma wszystkie Textwłaściwości , Fonti Placeholder , które Entry definiują. Ponadto SearchBar definiuje trzy dodatkowe właściwości:
CancelButtonColortypuColorSearchCommandtypuICommanddo użycia z powiązaniami danych i MVVMSearchCommandParametertypuObject, do użycia zSearchCommand
Przycisk anulowania specyficznego dla platformy usuwa tekst. Obiekt SearchBar ma również przycisk wyszukiwania specyficznego dla platformy. Naciśnięcie jednego z tych przycisków powoduje wywołanie jednego z dwóch zdarzeń, które SearchBar definiuje:
TextChangedobiekt, któremu towarzyszyTextChangedEventArgsSearchButtonPressed
Przykład SearchBarDemo przedstawia element SearchBar.
Wybór daty i godziny
Widoki DatePicker i TimePicker implementują kontrolki specyficzne dla platformy, które umożliwiają użytkownikowi określenie daty lub godziny.
The DatePicker
DatePicker definiuje cztery właściwości:
MinimumDatetypuDateTime, zainicjowany do 1 stycznia 1900 r.MaximumDatetypuDateTime, zainicjowany do 31 grudnia 2100 r.DatetypuDateTime, zainicjowany naDateTime.TodayFormattypustring, ciąg formatowania platformy .NET zainicjowany na "d", wzorzec daty krótkiej, co powoduje wyświetlenie daty, takiej jak "7/20/1969" w Stanach Zjednoczonych.
Właściwości w języku XAML można ustawić DateTime , wyrażając właściwości jako elementy właściwości i używając niezmiennego formatu daty krótkiej kultury ("7/20/1969").
Przykład DaysBetweenDates oblicza liczbę dni między dwiema datami wybranymi przez użytkownika.
TimePicker (lub czy jest to timeSpanPicker?)
TimePicker definiuje dwie właściwości i brak zdarzeń:
Timejest typuTimeSpan, a nieDateTime, wskazując czas, który upłynął od północyFormattypustring, ciąg formatowania platformy .NET zainicjowany na "t", wzorzec krótkiego czasu, co powoduje wyświetlenie czasu, takiego jak "1:45 PM" w Stanach Zjednoczonych.
Program SetTimer pokazuje, jak używać parametru TimePicker , aby określić czasomierza. Program działa tylko wtedy, gdy zachowasz go na pierwszym planie.
Program SetTimer demonstruje również użycie DisplayAlert metody Page w celu wyświetlenia pola alertu.
