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


Редактор

Многоплатформенный пользовательский интерфейс приложения .NET (.NET MAUI) Editor позволяет вводить и изменять несколько строк текста.

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

  • AutoSizeEditorAutoSizeOptionТип , определяет, будет ли редактор изменять размер, чтобы разместить входные данные пользователя. По умолчанию редактор не имеет автоматического размера.
  • HorizontalTextAlignment, типа TextAlignment, определяет горизонтальное выравнивание текста.
  • VerticalTextAlignment, типа TextAlignment, определяет вертикальное выравнивание текста.

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

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

Editor производный от 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 при изменении текста Editor . Объект TextChangedEventArgs , сопровождающий TextChanged событие, имеет NewTextValue и OldTextValue свойства, которые указывают новый и старый текст соответственно.

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

Создание редактора

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

<Editor x:Name="editor"
        Placeholder="Enter your response here"
        HeightRequest="250"
        TextChanged="OnEditorTextChanged"
        Completed="OnEditorCompleted" />

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

Editor editor = new Editor { Placeholder = "Enter text", HeightRequest = 250 };
editor.TextChanged += OnEditorTextChanged;
editor.Completed += OnEditorCompleted;

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

Снимок экрана: базовый редактор в Android.

Примечание.

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

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

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

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

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

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

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

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

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

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

Примечание.

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

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

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

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

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

Автоматический размер редактора

Можно Editor выполнить автоматическое масштабирование содержимого, задав Editor.AutoSize для TextChangesсвойства значение , которое является значением перечисления EditorAutoSizeOption . Это перечисление имеет два значения:

  • Disabled указывает, что автоматическое изменение размера отключено и является значением по умолчанию.
  • TextChanges указывает, что автоматическое изменение размера включено.

Это можно обеспечить, выполнив следующие действия.

<Editor Text="Enter text here"
        AutoSize="TextChanges" />

При включении автоматического Editor изменения размера высота увеличивается при заполнении пользователем текста, а высота уменьшается по мере удаления текста пользователем. Это можно использовать, чтобы обеспечить Editor правильность размеров объектов DataTemplate CollectionView .

Внимание

Не Editor будет автоматический размер, если HeightRequest свойство задано.

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

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

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

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

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

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

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

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

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

<Editor Keyboard="Chat" />

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

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

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

<Editor>
    <Editor.Keyboard>
        <Keyboard x:FactoryMethod="Create">
            <x:Arguments>
                <KeyboardFlags>Suggestions,CapitalizeCharacter</KeyboardFlags>
            </x:Arguments>
        </Keyboard>
    </Editor.Keyboard>
</Editor>

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

Editor editor = new Editor();
editor.Keyboard = Keyboard.Create(KeyboardFlags.Suggestions | KeyboardFlags.CapitalizeCharacter);

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

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

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

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

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

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

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

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

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

Примечание.

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

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

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

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

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

Примечание.

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

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

Пользователям может быть запрещено изменять текст в свойстве Editor IsReadOnly , которое имеет значение falseпо умолчанию , в true:

<Editor Text="This is a read-only Editor"
        IsReadOnly="true" />

Примечание.

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