Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
.NET пользовательский интерфейс многоплатформенного приложения (.NET MAUI) SearchBar — это контрол для ввода пользователем, используемый для инициации поиска. Элемент SearchBar управления поддерживает текст заполнителя, ввод запросов, выполнение поиска и возможность отмены. В следующем снимке экрана iOS содержится запрос SearchBar с результатами, отображаемыми в ListView.
Снимок экрана: панель поиска.
SearchBar определяет следующие свойства:
- — это , определяющий цвет кнопки отмены.
-
HorizontalTextAlignment
является значением перечисления TextAlignment, которое определяет горизонтальное выравнивание текста запроса. -
SearchCommand
— это ICommand, который позволяет связывать действия пользователя, такие как касания пальцем или щелчки, с командами, определенными в вьюмодели. -
SearchCommandParameter
— этоobject
, который должен передаваться вSearchCommand
. -
VerticalTextAlignment
— это значение перечисления TextAlignment, определяющее вертикальное выравнивание текста запроса.
- — это , определяющий цвет кнопки отмены.
-
HorizontalTextAlignment
является значением перечисления TextAlignment, которое определяет горизонтальное выравнивание текста запроса. -
ReturnType
, типа ReturnType, указывает внешний вид кнопки возврата. Значение по умолчанию этого свойства равноSearch
. SearchCommand
— это возможность ICommand привязки действий пользователя, таких как касания пальца или щелчки, для команд, определенных в режиме просмотра.-
SearchCommandParameter
— этоobject
, который должен передаваться вSearchCommand
. -
SearchIconColor
— это Color, определяющий цвет значка поиска. -
VerticalTextAlignment
— это значение перечисления TextAlignment, определяющее вертикальное выравнивание текста запроса.
Эти свойства поддерживаются объектами BindableProperty, что означает, что они могут быть целями для привязок данных и стилизации.
Кроме того, элемент SearchBar объявляет событие, вызываемое SearchButtonPressed
при нажатии кнопки поиска или нажатия клавиши Enter.
SearchBar происходит от класса InputView, от которого наследует следующие свойства:
-
CharacterSpacing
, типdouble
, задает интервал между символами в введенном тексте. - типа определяет положение курсора в редакторе.
-
FontAttributes
, типаFontAttributes
, определяет стиль текста. FontAutoScalingEnabled
, типаbool
, определяет, будет ли текст отражать параметры масштабирования, заданные в операционной системе. Значение по умолчанию этого свойства равноtrue
.-
FontFamily
, типаstring
, определяет семейство шрифтов. - , типа , определяет размер шрифта.
IsReadOnly
bool
тип определяет, должно ли запрещаться пользователю изменять текст. Значение по умолчанию этого свойства равноfalse
.IsSpellCheckEnabled
, типаbool
, определяет, включена ли проверка орфографии.IsTextPredictionEnabled
, типаbool
, контролирует, включено ли прогнозирование текста и автоматическое исправление текста.Keyboard
типаKeyboard
указывает на экранную клавиатуру, отображаемую при вводе текста.-
MaxLength
, типint
, определяет максимальную длину входных данных. Placeholder
, типаstring
, определяет текст, отображаемый когда элемент управления пуст.-
PlaceholderColor
, тип Color, определяет цвет заполнителя текста. SelectionLength
, типаint
, представляет длину выделенного текста в элементе управления.Text
, типаstring
, определяет текст, введенный в элемент управления., типа , определяет цвет введенного текста.
-
TextTransform
, типTextTransform
, указывает регистр введенного текста.
Эти свойства поддерживаются объектами BindableProperty, что означает, что они могут быть целями для привязок данных и стилизации.
Кроме того, InputView определяет событие TextChanged
, которое возникает при изменении текста в Entry. Объект TextChangedEventArgs
, сопровождающий событие TextChanged
, имеет свойства NewTextValue
и OldTextValue
, которые указывают новый и старый текст соответственно.
Создание панели поиска
Чтобы создать поле поиска, создайте объект SearchBar и установите свойства так, чтобы его текст формулировал инструкцию пользователю ввести поисковую фразу.
В следующем примере XAML показано, как создать строку поиска:
<SearchBar Placeholder="Search items..." />
Эквивалентный код на C# выглядит так:
SearchBar searchBar = new SearchBar { Placeholder = "Search items..." };
Примечание.
В iOS клавиатура обратимого ввода может охватывать текстовое поле, когда поле находится в нижней части экрана, что затрудняет ввод текста. Однако в приложении iOS для .NET MAUI страницы автоматически прокручиваются, когда клавиатура обратимого ввода будет охватывать поле ввода текста, чтобы поле было выше клавиатуры обратимого ввода. Метод KeyboardAutoManagerScroll.Disconnect
в пространстве имен Microsoft.Maui.Platform
можно вызвать, чтобы отключить это поведение по умолчанию. Метод KeyboardAutoManagerScroll.Connect
можно вызвать для повторного включения поведения после его отключения.
Выполнение поиска с помощью обработчиков событий
Поиск можно выполнить с помощью элемента управления SearchBar, подключив обработчик событий к одному из следующих событий:
-
SearchButtonPressed
, который вызывается, когда пользователь нажимает кнопку поиска или нажимает клавишу ВВОД.
-
TextChanged
, который вызывается при изменении текста в поле запроса. Это событие наследуется от класса InputView.
В следующем примере XAML показан обработчик событий, подключенный к TextChanged
событию, и используется ListView для отображения результатов поиска.
<SearchBar TextChanged="OnTextChanged" />
<ListView x:Name="searchResults" >
В этом примере TextChanged
событие связано с обработчиком событий с именем OnTextChanged
. Этот обработчик находится в файле программной части:
void OnTextChanged(object sender, EventArgs e)
{
SearchBar searchBar = (SearchBar)sender;
searchResults.ItemsSource = DataService.GetSearchResults(searchBar.Text);
}
В этом примере класс DataService
с методом GetSearchResults
используется для возврата элементов, соответствующих запросу. Значение свойства элемента управления SearchBarText
передается методу GetSearchResults
, а результат используется для обновления свойства элемента управления ListViewItemsSource
. Общий эффект заключается в том, что результаты поиска отображаются в ListView.
Выполнение поиска с помощью модели представления
Поиск можно выполнить без обработчиков событий, привязав свойство SearchCommand
к реализации ICommand. Для получения дополнительной информации о командировании см. раздел "Командирование".
В следующем примере показан класс ViewModel, содержащий ICommand свойство с именем PerformSearch
:
public class SearchViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void NotifyPropertyChanged([CallerMemberName] string propertyName = "")
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
public ICommand PerformSearch => new Command<string>((string query) =>
{
SearchResults = DataService.GetSearchResults(query);
});
private List<string> searchResults = DataService.Fruits;
public List<string> SearchResults
{
get
{
return searchResults;
}
set
{
searchResults = value;
NotifyPropertyChanged();
}
}
}
Примечание.
Модель представления предполагает существование класса DataService
способного выполнять поиск.
В следующем примере XAML используется класс SearchViewModel
:
<ContentPage ...
xmlns:viewmodels="clr-namespace:SearchBarDemos.ViewModels"
x:DataType="viewmodels:SearchViewModel">
<ContentPage.BindingContext>
<viewmodels:SearchViewModel />
</ContentPage.BindingContext>
<StackLayout>
<SearchBar x:Name="searchBar"
SearchCommand="{Binding PerformSearch}"
SearchCommandParameter="{Binding Text, x:DataType='SearchBar', Source={x:Reference searchBar}}"/>
<ListView x:Name="searchResults"
ItemsSource="{Binding SearchResults}" />
</StackLayout>
</ContentPage>
В этом примере BindingContext
присваивается экземпляр класса SearchViewModel
. Свойство SearchBar.SearchCommand
привязывается к свойству PerformSearch
модели представления, а свойство SearchCommandParameter
привязывается к свойству SearchBar.Text
. Свойство ListView.ItemsSource
привязано к свойству SearchResults
в модели представления.
Скрытие и отображение клавиатуры обратимого ввода
Класс SoftInputExtensions
в пространстве имен Microsoft.Maui
предоставляет ряд методов расширения, которые поддерживают взаимодействие с клавиатурой мягкого ввода на элементах управления, поддерживающих ввод текста. Класс определяет следующие методы:
IsSoftInputShowing
, который проверяет, отображает ли устройство клавиатуру обратимого ввода.
HideSoftInputAsync
, который попытается скрыть экранную клавиатуру, если она отображается в данный момент.
-
ShowSoftInputAsync
, который попытается показать экранную клавиатуру, если она в настоящее время скрыта.
В следующем примере показано, как скрыть экранную клавиатуру в SearchBar с именем searchBar
, если она отображается в данный момент времени:
if (searchBar.IsSoftInputShowing())
await searchBar.HideSoftInputAsync(System.Threading.CancellationToken.None);