Поделиться через


Формат ввода

Пользовательский интерфейс многоплатформенного приложения .NET (.NET MAUI) Entry позволяет вводить и изменять одну строку текста. Кроме того, Entry его можно использовать в качестве поля пароля.

Entry определяет следующие свойства:

  • ClearButtonVisibilityClearButtonVisibilityТип , определяет, отображается ли кнопка очистки, которая позволяет пользователю очистить текст. Значение по умолчанию этого свойства гарантирует, что кнопка очистки не отображается.
  • HorizontalTextAlignment, типа TextAlignment, определяет горизонтальное выравнивание текста.
  • IsPassword, типа bool, указывает, должна ли запись визуально скрывать типизированный текст.
  • ReturnCommand, типа ICommand, определяет команду, выполняемую при нажатии возвращаемого ключа.
  • ReturnCommandParameter, тип object, указывает параметр для ReturnCommandпараметра .
  • ReturnTypeReturnTypeТип , указывает внешний вид кнопки возврата.
  • VerticalTextAlignment, типа TextAlignment, определяет вертикальное выравнивание текста.

Эти свойства поддерживаются объектами BindableProperty, то есть эти свойства можно указывать в качестве целевых для привязки и стилизации данных.

Кроме того, Entry определяет событие, которое возникает Completed при завершении текста в ключе Entry возврата.

Entry производный от InputView класса, от которого он наследует следующие свойства:

  • CharacterSpacing, тип double, задает интервал между символами в введенном тексте.
  • CursorPositionintТип , определяет положение курсора в редакторе.
  • FontAttributes, типа FontAttributes, определяет стиль текста.
  • FontAutoScalingEnabledboolТип , определяет, будет ли текст отражать параметры масштабирования, заданные в операционной системе. Значение по умолчанию этого свойства равно true.
  • FontFamily, тип string, определяет семейство шрифтов.
  • FontSize, тип double, определяет размер шрифта.
  • IsReadOnlyboolТип , определяет, следует ли запретить пользователю изменять текст. Значение по умолчанию этого свойства равно false.
  • IsSpellCheckEnabledboolТип , определяет, включена ли проверка орфографии.
  • IsTextPredictionEnabledТип , определяет, включено ли прогнозирование boolтекста и автоматическое исправление текста.
  • Keyboard( тип Keyboard) указывает клавиатуру обратимого ввода, отображаемую при вводе текста.
  • MaxLength, тип int, определяет максимальную длину входных данных.
  • PlaceholderstringТип , определяет текст, отображаемый при пустом элементе управления.
  • PlaceholderColor, тип Color, определяет цвет заполнителя текста.
  • SelectionLengthintТип , представляет длину выделенного текста в элементе управления.
  • TextstringТип , определяет текст, введенный в элемент управления.
  • TextColorColorТип , определяет цвет введенного текста.
  • TextTransformTextTransformТип , указывает регистр введенного текста.

Эти свойства поддерживаются объектами BindableProperty, то есть эти свойства можно указывать в качестве целевых для привязки и стилизации данных.

Кроме того, InputView определяет событие, которое возникает TextChanged при изменении текста Entry . Объект TextChangedEventArgs , сопровождающий TextChanged событие, имеет NewTextValue и OldTextValue свойства, которые указывают новый и старый текст соответственно.

Сведения об указании шрифтов в объекте Entryсм. в разделе "Шрифты".

Создание записи

В следующем примере показано, как создать :Entry

<Entry x:Name="entry"
       Placeholder="Enter text"
       TextChanged="OnEntryTextChanged"
       Completed="OnEntryCompleted" />

Эквивалентный код на C# выглядит так:

Entry entry = new Entry { Placeholder = "Enter text" };
entry.TextChanged += OnEntryTextChanged;
entry.Completed += OnEntryCompleted;

На следующем снимка экрана показан результат Entry android:

Снимок экрана: базовая запись в Android.

Примечание.

В iOS клавиатура обратимого ввода может охватывать текстовое поле, когда поле находится в нижней части экрана, что затрудняет ввод текста. Однако в приложении iOS для .NET MAUI страницы автоматически прокручиваются, когда клавиатура обратимого ввода будет охватывать поле ввода текста, чтобы поле было выше клавиатуры обратимого ввода. Метод KeyboardAutoManagerScroll.Disconnect в Microsoft.Maui.Platform пространстве имен можно вызвать, чтобы отключить это поведение по умолчанию. Метод KeyboardAutoManagerScroll.Connect можно вызвать для повторного включения поведения после его отключения.

Введенный текст можно получить, прочитав Text свойство, и TextChanged Completed события сигнализировать о том, что текст изменился или был завершен.

Событие TextChanged возникает при изменении текста и TextChangedEventArgs предоставьте текст Entry до и после изменения с помощью OldTextValue NewTextValue свойств:

void OnEntryTextChanged(object sender, TextChangedEventArgs e)
{
    string oldText = e.OldTextValue;
    string newText = e.NewTextValue;
    string myText = entry.Text;
}

Событие Completed возникает, когда пользователь завершил ввод, нажав клавишу Return на клавиатуре или нажав клавишу TAB в Windows. Обработчик события — это универсальный обработчик событий:

void OnEntryCompleted(object sender, EventArgs e)
{
   string text = ((Entry)sender).Text;
}

Completed После срабатывания события любойICommand, указанный ReturnCommand свойством, выполняется с object заданным свойством, передаваемым ReturnCommandParameter свойствуReturnCommand.

Примечание.

Класс VisualElement , который находится в Entry иерархии наследования, также имеет Focused и Unfocused события.

Установка интервалов символов

Интервалы символов можно применить к объекту Entry , задав CharacterSpacing свойству double значение:

<Entry ...
       CharacterSpacing="10" />

Результатом является то, что символы в тексте, Entry отображаемые пробелами независимо от устройства, отличаются CharacterSpacing друг от друга.

Примечание.

Значение CharacterSpacing свойства применяется к тексту, отображаемого свойствами и Placeholder свойствамиText.

Ограничение длины входных данных

Свойство MaxLength можно использовать для ограничения длины входных данных, разрешенной для Entryобъекта . Это свойство должно иметь положительное целое число:

<Entry ...
       MaxLength="10" />

MaxLength Значение свойства 0 указывает, что входные данные не будут разрешены, а значение int.MaxValue, которое является значением по умолчанию для объектаEntry, указывает, что число введенных символов не ограничено.

Установка длины выделения курсора и позиции курсора

Свойство CursorPosition можно использовать для возврата или задания позиции, в которой следующий символ будет вставлен в строку, хранящуюся в свойстве Text :

<Entry Text="Cursor position set"
       CursorPosition="5" />

Значение CursorPosition свойства по умолчанию равно 0, указывающее, что текст будет вставлен в начале.Entry

Кроме того, SelectionLength свойство можно использовать для возврата или задания длины выделения текста в пределах Entry:

<Entry Text="Cursor position and selection length set"
       CursorPosition="2"
       SelectionLength="10" />

Значение SelectionLength свойства по умолчанию равно 0, указывающее, что текст не выбран.

Отображение кнопки "Очистить"

Свойство ClearButtonVisibility можно использовать для управления Entry отображением кнопки очистки, которая позволяет пользователю очистить текст. Этому свойству должен быть присвоен член перечисления ClearButtonVisibility:

  • Never указывает, что кнопка очистки никогда не будет отображаться. Это значение по умолчанию для свойства ClearButtonVisibility.
  • WhileEditing указывает, что в нем Entryбудет отображаться кнопка очистки, а фокус и текст отображаются.

В следующем примере показано задание свойства:

<Entry Text=".NET MAUI"
       ClearButtonVisibility="WhileEditing" />

На следующем снимок экрана показан Entry на Android с включенной кнопкой очистки:

Снимок экрана: базовая запись с ясной кнопкой Android.

Преобразование текста

Объект Entry может преобразовать регистр текста, хранящегося в Text свойстве, задав TextTransform свойство значению перечисления TextTransform . Это перечисление имеет четыре значения:

  • None указывает, что текст не будет преобразован.
  • Default указывает, что будет использоваться поведение по умолчанию для платформы. Это значение по умолчанию для свойства TextTransform.
  • Lowercase указывает, что текст будет преобразован в нижний регистр.
  • Uppercase указывает, что текст будет преобразован в верхний регистр.

В следующем примере показано преобразование текста в верхний регистр:

<Entry Text="This text will be displayed in uppercase."
       TextTransform="Uppercase" />

Невидимая запись текста

EntryIsPassword предоставляет свойство, визуально скрывающее введенный текст, если задано значение true:

<Entry IsPassword="true" />

На следующем снимках экрана показано Entry , чьи входные данные были скрыты:

Снимок экрана: базовая запись с параметром IsPassword с значением true.

Настройка клавиатуры

Клавиатура обратимого ввода, представленная при взаимодействии пользователей с Entry ним, может быть программно задана через Keyboard свойство, для одного из следующих свойств из Keyboard класса:

  • Chat — это текстовая клавиатура с эмодзи.
  • Default — это клавиатура по умолчанию.
  • Email используется для ввода адресов электронной почты.
  • Numeric — цифровая клавиатура.
  • Plain предназначена для ввода текста, если нет заданных KeyboardFlags.
  • Telephone — клавиатура для ввода телефонных номеров.
  • Text — текстовая клавиатура.
  • Url — клавиатура для ввода путей к файлам и веб-адресов.

В следующем примере показано задание Keyboard свойства:

<Entry Keyboard="Chat" />

Класс Keyboard также имеет фабричный метод Create, который может использоваться для настройки клавиатуры, задавая регистр букв, проверку орфографии и режим подсказок. Значения перечисления KeyboardFlags задаются как аргументы метода, при этом возвращается настроенное свойство Keyboard. Перечисление KeyboardFlags имеет такие значения:

  • None указывает, что клавиатура не имеет никаких дополнительных функций.
  • CapitalizeSentence указывает, что первые слова во всех вводимых предложениях автоматически начинаются с прописных букв.
  • Spellcheck указывает, что для вводимого текста выполняется проверка орфографии.
  • Suggestions указывает, что для вводимых слов предлагается завершение.
  • CapitalizeWord указывает, что все слова автоматически начинаются с прописных букв.
  • CapitalizeCharacter указывает, что все символы автоматически пишутся прописными буквами.
  • CapitalizeNone указывает, что автоматическая подстановка прописных букв не выполняется.
  • All указывает, что для вводимого текста выполняется проверка орфографии, завершение слов и автоматическое написание предложений с прописной буквы.

В следующем примере кода XAML показано, как настроить значение по умолчанию Keyboard, чтобы включить предложение завершения слов и написание всех символов прописными буквами:

<Entry Placeholder="Enter text here">
    <Entry.Keyboard>
        <Keyboard x:FactoryMethod="Create">
            <x:Arguments>
                <KeyboardFlags>Suggestions,CapitalizeCharacter</KeyboardFlags>
            </x:Arguments>
        </Keyboard>
    </Entry.Keyboard>
</Entry>

Эквивалентный код на C# выглядит так:

Entry entry = new Entry { Placeholder = "Enter text here" };
entry.Keyboard = Keyboard.Create(KeyboardFlags.Suggestions | KeyboardFlags.CapitalizeCharacter);

Настройка возвращаемого ключа

Внешний вид возвращаемого ключа на клавиатуре обратимого ввода, отображаемой при Entry фокусе, можно настроить, задав ReturnType свойству значение перечисления ReturnType :

  • Default — указывает, что конкретный ключ возврата не требуется, и используется платформа по умолчанию.
  • Done — указывает ключ возврата "Готово".
  • Go — указывает ключ возврата Go.
  • Next — указывает ключ возврата Next.
  • Search — указывает ключ возврата "Поиск".
  • Send — указывает ключ возврата "Отправить".

В следующем примере XAML показано, как задать возвращаемый ключ:

<Entry ReturnType="Send" />

Примечание.

Точный внешний вид возвращаемого ключа зависит от платформы. В iOS ключ возврата является текстовой кнопкой. Однако в Android и Windows возвращаемый ключ является кнопкой на основе значков.

При нажатии клавиши Return событие запускается и выполняется любое ICommand событие, указанное ReturnCommand Completed свойством. Кроме того, любой object , указанный ReturnCommandParameter свойством, будет передан ICommand в качестве параметра. Дополнительные сведения о командах см. в разделе "Командирование".

Скрытие и отображение клавиатуры обратимого ввода

Класс SoftInputExtensions в Microsoft.Maui пространстве имен предоставляет ряд методов расширения, которые поддерживают взаимодействие с клавиатурой обратимого ввода на элементах управления, поддерживающих ввод текста. Класс определяет следующие методы:

  • IsSoftInputShowing, который проверяет, отображает ли устройство клавиатуру обратимого ввода.
  • HideSoftInputAsync, который попытается скрыть клавиатуру обратимого ввода, если она отображается в данный момент.
  • ShowSoftInputAsync, который попытается показать клавиатуру обратимого ввода, если она в настоящее время скрыта.

В следующем примере показано, как скрыть клавиатуру обратимого ввода в именованном Entry коде entry, если она отображается в данный момент:

if (entry.IsSoftInputShowing())
    await entry.HideSoftInputAsync(System.Threading.CancellationToken.None);

Включение и отключение проверки орфографии

Свойство IsSpellCheckEnabled определяет, включена ли проверка орфографии. По умолчанию для свойства задано trueзначение . Когда пользователь вводит текст, указываются ошибки.

Однако для некоторых сценариев ввода текста, таких как ввод имени пользователя, проверка орфографии обеспечивает отрицательный опыт и должна быть отключена, установив IsSpellCheckEnabled для свойства falseзначение :

<Entry ... IsSpellCheckEnabled="false" />

Примечание.

IsSpellCheckEnabled Если для свойства задано falseзначение , и пользовательская клавиатура не используется, собственный средство проверки орфографии будет отключено. Однако если Keyboard задано значение, которое отключает проверку орфографии, например Keyboard.Chat, IsSpellCheckEnabled свойство игнорируется. Поэтому свойство нельзя использовать для включения проверки орфографии, которая Keyboard явно отключает его.

Включение и отключение прогнозирования текста

Свойство IsTextPredictionEnabled определяет, включено ли прогнозирование текста и автоматическое исправление текста. По умолчанию для свойства задано trueзначение . По мере ввода текста пользователь представляет прогнозы слов.

Однако для некоторых сценариев ввода текста, таких как ввод имени пользователя, прогнозирование текста и автоматическое исправление текста, обеспечивает отрицательный интерфейс и должен быть отключен, задав IsTextPredictionEnabled для свойства falseзначение :

<Entry ... IsTextPredictionEnabled="false" />

Примечание.

IsTextPredictionEnabled Если для свойства задано falseзначение, а пользовательская клавиатура не используется, прогнозирование текста и автоматическое исправление текста отключается. Однако если Keyboard задано значение, которое отключает прогнозирование текста, IsTextPredictionEnabled свойство игнорируется. Поэтому свойство нельзя использовать для включения прогнозирования текста для явного Keyboard отключения этого свойства.

Запрет ввода текста

Пользователи могут запретить изменять текст в объекте Entry , задав IsReadOnly для свойства trueзначение :

<Entry Text="User input won't be accepted."
       IsReadOnly="true" />

Примечание.

Свойство IsReadonly не изменяет внешний вид визуального Entryэлемента, в отличие IsEnabled от свойства, которое также изменяет внешний вид визуального Entry элемента на серый.