Búsqueda de Xamarin.Forms ShellXamarin.Forms Shell Search

Descargar ejemplo Descargar el ejemploDownload Sample Download the sample

Xamarin.Forms Shell incluye la funcionalidad de búsqueda integrada que proporciona la clase SearchHandler.Xamarin.Forms Shell includes integrated search functionality that's provided by the SearchHandler class. La funcionalidad de búsqueda se puede agregar a una página mediante el establecimiento de la propiedad adjunta Shell.SearchHandler en un objeto SearchHandler en subclase.Search capability can be added to a page by setting the Shell.SearchHandler attached property to a sub-classed SearchHandler object. El resultado es un cuadro de búsqueda que se agrega en la parte superior de la página:This results in a search box being added at the top of the page:

Captura de pantalla de una clase SearchHandler de Shell en iOS y AndroidScreenshot of a Shell SearchHandler, on iOS and Android

Cuando se escribe una consulta en el cuadro de búsqueda, la propiedad Query se actualiza y, en cada actualización, se ejecuta el método OnQueryChanged.When a query is entered into the search box, the Query property is updated, and on each update the OnQueryChanged method is executed. Este método se puede invalidar para rellenar el área de sugerencias de búsqueda con datos:This method can be overridden to populate the search suggestions area with data:

Captura de pantalla de unos resultados de búsqueda de una clase SearchHandler de Shell en iOS y AndroidScreenshot of a search results in a Shell SearchHandler, on iOS and Android

Luego, cuando se selecciona un resultado del área de sugerencias de búsqueda, se ejecuta el método OnItemSelected.Then, when a result is selected from the search suggestions area, the OnItemSelected method is executed. Este método se puede invalidar para responder de forma adecuada; por ejemplo, navegando a una página de detalles.This method can be overridden to respond appropriately, such as by navigating to a detail page.

Creación de una clase SearchHandlerCreate a SearchHandler

La funcionalidad de búsqueda se puede agregar a una aplicación de Shell mediante la creación de subclases de la clase SearchHandler y la invalidación de los métodos OnQueryChanged y OnItemSelected:Search functionality can be added to a Shell application by subclassing the SearchHandler class, and overriding the OnQueryChanged and OnItemSelected methods:

public class MonkeySearchHandler : SearchHandler
{
    protected override void OnQueryChanged(string oldValue, string newValue)
    {
        base.OnQueryChanged(oldValue, newValue);

        if (string.IsNullOrWhiteSpace(newValue))
        {
            ItemsSource = null;
        }
        else
        {
            ItemsSource = MonkeyData.Monkeys
                .Where(monkey => monkey.Name.ToLower().Contains(newValue.ToLower()))
                .ToList<Animal>();
        }
    }

    protected override async void OnItemSelected(object item)
    {
        base.OnItemSelected(item);

        // Note: strings will be URL encoded for navigation (e.g. "Blue Monkey" becomes "Blue%20Monkey"). Therefore, decode at the receiver.
        await (App.Current.MainPage as Xamarin.Forms.Shell).GoToAsync($"monkeydetails?name={((Animal)item).Name}");
    }
}

La invalidación OnQueryChanged tiene dos argumentos: oldValue, que contiene la consulta de búsqueda anterior, y newValue, que contiene la consulta de búsqueda actual.The OnQueryChanged override has two arguments: oldValue, which contains the previous search query, and newValue, which contains the current search query. El área de sugerencias de búsqueda se puede actualizar mediante el establecimiento de la propiedad SearchHandler.ItemsSource en una colección IEnumerable que contiene elementos que coinciden con la consulta de búsqueda actual.The search suggestions area can be updated by setting the SearchHandler.ItemsSource property to an IEnumerable collection that contains items that match the current search query.

Cuando el usuario selecciona un resultado de búsqueda, se ejecuta la invalidación OnItemSelected y se establece la propiedad SelectedItem.When a search result is selected by the user, the OnItemSelected override is executed and the SelectedItem property is set. En este ejemplo, el método dirige a otra página que muestra datos sobre el elemento Animal seleccionado.In this example, the method navigates to another page that displays data about the selected Animal. Para más información sobre la navegación, consulte Navegación en Xamarin.Forms Shell.For more information about navigation, see Xamarin.Forms Shell Navigation.

Nota

Se pueden establecer propiedades SearchHandler adicionales para controlar la apariencia del cuadro de búsqueda.Additional SearchHandler properties can be set to control the search box appearance.

Consumo de una clase SearchHandlerConsume a SearchHandler

La clase SearchHandler en subclase se puede consumir mediante el establecimiento de la propiedad adjunta Shell.SearchHandler en un objeto del tipo en subclase:The subclassed SearchHandler can be consumed by setting the Shell.SearchHandler attached property to an object of the subclassed type:

<ContentPage ...
             xmlns:controls="clr-namespace:Xaminals.Controls">
    <Shell.SearchHandler>
        <controls:MonkeySearchHandler Placeholder="Enter search term"
                                      ShowsResults="true"
                                      DisplayMemberName="Name" />
    </Shell.SearchHandler>
    ...
</ContentPage>

El código de C# equivalente es el siguiente:The equivalent C# code is:

Shell.SetSearchHandler(this, new MonkeySearchHandler
{
    Placeholder = "Enter search term",
    ShowsResults = true,
    DisplayMemberName = "Name"
});

El método MonkeySearchHandler.OnQueryChanged devuelve un elemento List de objetos Animal.The MonkeySearchHandler.OnQueryChanged method returns a List of Animal objects. La propiedad DisplayMemberName se establece en la propiedad Name de cada objeto Animal, por lo que los datos mostrados en el área de sugerencias serán el nombre de cada animal.The DisplayMemberName property is set to the Name property of each Animal object, and so the data displayed in the suggestions area will be each animal name.

La propiedad ShowsResults está establecida en true, de modo que se muestran sugerencias de búsqueda cuando el usuario escribe una consulta de búsqueda:The ShowsResults property is set to true, so that search suggestions are displayed as the user enters a search query:

Captura de pantalla de resultados de búsqueda en una clase SearchHandler de Shell en iOS y AndroidScreenshot of search results in a Shell SearchHandler, on iOS and Android

A medida que cambia la consulta de búsqueda, se actualiza el área de sugerencias de búsqueda:As the search query changes, the search suggestions area is updated:

Captura de pantalla de resultados de búsqueda en una clase SearchHandler de Shell en iOS y AndroidScreenshot of search results in a Shell SearchHandler, on iOS and Android

Cuando se selecciona un resultado de búsqueda, hay un desplazamiento hasta MonkeyDetailPage y se muestran datos sobre el mono seleccionado:When a search result is selected, the MonkeyDetailPage is navigated to, and data about the selected monkey is displayed:

Captura de pantalla de detalles de mono en iOS y AndroidScreenshot of monkey details, on iOS and Android

Definición de la apariencia de los elemento de los resultados de búsquedaDefine search results item appearance

Además de mostrar datos de string en los resultados de búsqueda, se puede definir la apariencia de cada uno de los elementos de los resultados de búsqueda mediante el establecimiento de la propiedad SearchHandler.ItemTemplate en DataTemplate:In addition to displaying string data in the search results, the appearance of each search result item can be defined by setting the SearchHandler.ItemTemplate property to a DataTemplate:

<ContentPage ...
             xmlns:controls="clr-namespace:Xaminals.Controls">    
    <Shell.SearchHandler>
        <controls:MonkeySearchHandler Placeholder="Enter search term"
                                      ShowsResults="true">
            <controls:MonkeySearchHandler.ItemTemplate>
                <DataTemplate>
                    <Grid Padding="10">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="0.15*" />
                            <ColumnDefinition Width="0.85*" />
                        </Grid.ColumnDefinitions>
                        <Image Source="{Binding ImageUrl}"
                               Aspect="AspectFill"
                               HeightRequest="40"
                               WidthRequest="40" />
                        <Label Grid.Column="1"
                               Text="{Binding Name}"
                               FontAttributes="Bold" />
                    </Grid>
                </DataTemplate>
            </controls:MonkeySearchHandler.ItemTemplate>
       </controls:MonkeySearchHandler>
    </Shell.SearchHandler>
    ...
</ContentPage>

El código de C# equivalente es el siguiente:The equivalent C# code is:

Shell.SetSearchHandler(this, new MonkeySearchHandler
{
    Placeholder = "Enter search term",
    ShowsResults = true,
    DisplayMemberName = "Name",
    ItemTemplate = new DataTemplate(() =>
    {
        Grid grid = new Grid { Padding = 10 };
        grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(0.15, GridUnitType.Star) });
        grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(0.85, GridUnitType.Star) });

        Image image = new Image { Aspect = Aspect.AspectFill, HeightRequest = 40, WidthRequest = 40 };
        image.SetBinding(Image.SourceProperty, "ImageUrl");
        Label nameLabel = new Label { FontAttributes = FontAttributes.Bold };
        nameLabel.SetBinding(Label.TextProperty, "Name");

        grid.Children.Add(image);
        grid.Children.Add(nameLabel, 1, 0);
        return grid;
    })
});

Los elementos especificados en DataTemplate definen la apariencia de cada elemento en el área de sugerencias.The elements specified in the DataTemplate define the appearance of each item in the suggestions area. En este ejemplo, el diseño dentro de DataTemplate se administra mediante un objeto Grid.In this example, layout within the DataTemplate is managed by a Grid. El objeto Grid contiene un objeto Image y un objeto Label, que enlazan ambos con las propiedades de cada objeto Monkey.The Grid contains an Image object, and a Label object, that both bind to properties of each Monkey object.

Las capturas de pantalla siguientes muestran el resultado de crear plantillas para cada elemento del área de sugerencias:The following screenshots show the result of templating each item in the suggestions area:

Captura de pantalla de resultados de búsqueda con plantilla en una clase SearchHandler de Shell en iOS y AndroidScreenshot of templated search results in a Shell SearchHandler, on iOS and Android

Para obtener más información sobre las plantillas de datos, consulte Plantillas de datos de Xamarin.Forms.For more information about data templates, see Xamarin.Forms Data Templates.

Visibilidad del cuadro de búsquedaSearch box visibility

Cuando se agrega un SearchHandler en la parte superior de una página, de forma predeterminada el cuadro de búsqueda está visible y totalmente expandido.When a SearchHandler is added at the top of a page, by default the search box is visible and fully expanded. Pero este comportamiento se puede cambiar estableciendo la propiedad SearchHandler.SearchBoxVisibility en uno de los miembros de la enumeración SearchBoxVisibility:However, this behavior can be changed by setting the SearchHandler.SearchBoxVisibility property to one of the SearchBoxVisibility enumeration members:

  • Hidden: el cuadro de búsqueda no es visible ni accesible.Hidden – the search box is not visible or accessible.
  • Collapsible: el cuadro de búsqueda está oculto hasta que el usuario realiza una acción para mostrarlo.Collapsible – the search box is hidden until the user performs an action to reveal it.
  • Expanded: el cuadro de búsqueda está visible y totalmente expandido.Expanded – the search box is visible and fully expanded.

En el ejemplo siguiente se muestra cómo ocultar el cuadro de búsqueda:The following example shows to how to hide the search box:

<ContentPage ...
             xmlns:controls="clr-namespace:Xaminals.Controls">
    <Shell.SearchHandler>
        <controls:MonkeySearchHandler SearchBoxVisibility="Hidden"
                                      ... />
    </Shell.SearchHandler>
    ...
</ContentPage>

Enfoque en el cuadro de búsquedaSearch box focus

Al pulsar en un cuadro de búsqueda aparece el teclado en pantalla, y el cuadro de búsqueda adquiere el foco de entrada.Tapping in a search box invokes the onscreen keyboard, with the search box gaining input focus. Esto también se consigue mediante programación llamando al método Focus, que intenta establecer el foco de entrada en el cuadro de búsqueda, y devuelve true si se realiza correctamente.This can also be achieved programmatically by calling the Focus method, which attempts to set input focus on the search box, and returns true if successful. Cuando un cuadro de búsqueda obtiene el foco, se desencadena el evento Focus y se llama al método OnFocused reemplazable.When a search box gains focus, the Focus event is fired and the overridable OnFocused method is called.

Cuando un cuadro de búsqueda tiene el foco de entrada, al pulsar en otro lugar en la pantalla desaparece el teclado en pantalla y el cuadro de búsqueda pierde el foco de entrada.When a search box has input focus, tapping elsewhere on the screen dismisses the onscreen keyboard, and the search box loses input focus. Esto también se consigue mediante programación llamando al método Unfocus.This can also be achieved programmatically by calling the Unfocus method. Cuando un cuadro de búsqueda pierde el foco, se desencadena el evento Unfocused y se llama al método OnUnfocus reemplazable.When a search box loses focus, the Unfocused event is fired and the overridable OnUnfocus method is called.

Se puede recuperar el estado del foco de un cuadro de búsqueda a través de la propiedad IsFocused, que devuelve true si un SearchHandler tiene actualmente el foco de entrada.The focus state of a search box can be retrieved through the IsFocused property, which returns true if a SearchHandler currently has input focus.

Apariencia SearchHandlerSearchHandler appearance

La clase SearchHandler define las siguientes propiedades que afectan a su apariencia:The SearchHandler class defines the following properties that affect its appearance:

  • BackgroundColor, del tipo Color, es el color de fondo para el texto del cuadro de búsqueda.BackgroundColor, of type Color, is the color of the background to the search box text.
  • CancelButtonColor, del tipo Color, es el color del botón Cancelar.CancelButtonColor, of type Color, is the color of the cancel button.
  • FontAttributes, del tipo FontAttributes, indica si el texto del cuadro de búsqueda está en negrita o cursiva.FontAttributes, of type FontAttributes, indicates if the search box text is italic or bold.
  • FontFamily, del tipo string, es la familia de fuentes utilizada para el texto del cuadro de búsqueda.FontFamily, of type string, is the font family used for the search box text.
  • FontSize, del tipo double, es el tamaño del texto del cuadro de búsqueda.FontSize, of type double, is the size of the search box text.
  • HorizontalTextAlignment, del tipo TextAlignment, es la alineación horizontal del texto del cuadro de búsqueda.HorizontalTextAlignment, of type TextAlignment, is the horizontal alignment of the search box text.
  • PlaceholderColor, del tipo Color, es el color del texto del cuadro de búsqueda del marcador de posición.PlaceholderColor, of type Color, is the color of the placeholder search box text.
  • TextColor, del tipo Color, es el color del texto del cuadro de búsqueda.TextColor, of type Color, is the color of the search box text.

Teclado SearchHandlerSearchHandler keyboard

El teclado que aparece cuando los usuarios interactúan con un SearchHandler se puede establecer mediante programación a través de la propiedad Keyboard en una de las siguientes propiedades desde la clase Keyboard:The keyboard that's presented when users interact with a SearchHandler can be set programmatically via the Keyboard property, to one of the following properties from the Keyboard class:

  • Chat: se usa para el texto y los lugares donde los emoji son útiles.Chat – used for texting and places where emoji are useful.
  • Default: el teclado predeterminado.Default – the default keyboard.
  • Email: se usa al especificar direcciones de correo electrónico.Email – used when entering email addresses.
  • Numeric: se usa al escribir números.Numeric – used when entering numbers.
  • Plain: se usa al escribir texto, sin ningún KeyboardFlags especificado.Plain – used when entering text, without any KeyboardFlags specified.
  • Telephone: se usa al escribir números de teléfono.Telephone – used when entering telephone numbers.
  • Text: se usa al escribir texto.Text – used when entering text.
  • Url : se usa para especificar las rutas de acceso de archivo y direcciones web.Url – used for entering file paths & web addresses.

Esto se puede lograr en XAML de la siguiente manera:This can be accomplished in XAML as follows:

<SearchHandler Keyboard="Email" />

El código de C# equivalente es el siguiente:The equivalent C# code is:

SearchHandler searchHandler = new SearchHandler { Keyboard = Keyboard.Email };

La clase Keyboard tiene también un patrón de diseño Factory Method Create que puede usarse para personalizar un teclado mediante la especificación del comportamiento de las mayúsculas y minúsculas, el corrector ortográfico y las sugerencias.The Keyboard class also has a Create factory method that can be used to customize a keyboard by specifying capitalization, spellcheck, and suggestion behavior. Los valores de enumeración KeyboardFlags se especifican como argumentos para el método, con la devolución de un Keyboard personalizado.KeyboardFlags enumeration values are specified as arguments to the method, with a customized Keyboard being returned. La enumeración KeyboardFlags contiene los valores siguientes:The KeyboardFlags enumeration contains the following values:

  • None: no se agregan características al teclado.None – no features are added to the keyboard.
  • CapitalizeSentence: indica que la primera letra de la primera palabra de cada frase se escribirá automáticamente en mayúsculas.CapitalizeSentence – indicates that the first letter of the first word of each entered sentence will be automatically capitalized.
  • Spellcheck: indica que se pasará el corrector ortográfico al texto especificado.Spellcheck – indicates that spellcheck will be performed on entered text.
  • Suggestions: indica que se ofrecerán finalizaciones de palabra para el texto especificado.Suggestions – indicates that word completions will be offered on entered text.
  • CapitalizeWord: indica que las primeras letras de todas las palabras se escribirán automáticamente en mayúsculas.CapitalizeWord – indicates that the first letter of each word will be automatically capitalized.
  • CapitalizeCharacter: indica que todos los caracteres se escribirán automáticamente en mayúsculas.CapitalizeCharacter – indicates that every character will be automatically capitalized.
  • CapitalizeNone: indica que no se producirá ningún uso automático de mayúsculas.CapitalizeNone – indicates that no automatic capitalization will occur.
  • All: indica que se pasará el corrector automático, se ofrecerán finalizaciones de palabras y las frases empezarán en mayúsculas en el texto especificado.All – indicates that spellcheck, word completions, and sentence capitalization will occur on entered text.

El ejemplo de código XAML siguiente muestra cómo personalizar el Keyboard predeterminado para ofrecer finalizaciones de palabras y poner en mayúsculas todos los caracteres especificados:The following XAML code example shows how to customize the default Keyboard to offer word completions and capitalize every entered character:

<SearchHandler Placeholder="Enter search terms">
    <SearchHandler.Keyboard>
        <Keyboard x:FactoryMethod="Create">
            <x:Arguments>
                <KeyboardFlags>Suggestions,CapitalizeCharacter</KeyboardFlags>
            </x:Arguments>
        </Keyboard>
    </SearchHandler.Keyboard>
</SearchHandler>

El código de C# equivalente es el siguiente:The equivalent C# code is:

SearchHandler searchHandler = new SearchHandler { Placeholder = "Enter search terms" };
searchHandler.Keyboard = Keyboard.Create(KeyboardFlags.Suggestions | KeyboardFlags.CapitalizeCharacter);

Referencia de SearchHandlerSearchHandler reference

La clase SearchHandler define las siguientes propiedades que controlan su apariencia y comportamiento:The SearchHandler class defines the following properties that control its appearance and behavior:

  • BackgroundColor, del tipo Color, es el color de fondo para el texto del cuadro de búsqueda.BackgroundColor, of type Color, is the color of the background to the search box text.
  • CancelButtonColor, del tipo Color, es el color del botón Cancelar.CancelButtonColor, of type Color, is the color of the cancel button.
  • ClearIcon, de tipo ImageSource, el icono que aparece para borrar el contenido del cuadro de búsqueda.ClearIcon, of type ImageSource, the icon displayed to clear the contents of the search box.
  • ClearIconHelpText, de tipo string, el texto de ayuda accesible para el icono de borrar.ClearIconHelpText, of type string, the accessible help text for the clear icon.
  • ClearIconName, de tipo string, el nombre del icono de borrar para usar con los lectores de pantalla.ClearIconName, of type string, the name of the clear icon for use with screen readers.
  • ClearPlaceholderCommand, de tipo ICommand, que se ejecuta cuando se pulsa ClearPlaceholderIcon.ClearPlaceholderCommand, of type ICommand, which is executed when the ClearPlaceholderIcon is tapped.
  • ClearPlaceholderCommandParameter, de tipo object, que es el parámetro que se pasa a ClearPlaceholderCommand.ClearPlaceholderCommandParameter, of type object, which is the parameter that's passed to the ClearPlaceholderCommand.
  • ClearPlaceholderEnabled, de tipo bool, que determina si se puede ejecutar ClearPlaceholderCommand.ClearPlaceholderEnabled, of type bool, which determines whether the ClearPlaceholderCommand can be executed. El valor predeterminado es true.The default value is true.
  • ClearPlaceholderHelpText, de tipo string, el texto de ayuda accesible para el icono de borrar marcador de posición.ClearPlaceholderHelpText, of type string, the accessible help text for the clear placeholder icon.
  • ClearPlaceholderIcon, de tipo ImageSource, el icono de borrar marcador de posición que se muestra cuando el cuadro de búsqueda está vacío.ClearPlaceholderIcon, of type ImageSource, the clear placeholder icon displayed when the search box is empty.
  • ClearPlaceholderName, de tipo string, el nombre del icono de borrar marcador de posición para su uso con los lectores de pantalla.ClearPlaceholderName, of type string, the name of the clear placeholder icon for use with screen readers.
  • Command, de tipo ICommand, que se ejecuta cuando se confirma la consulta de búsqueda.Command, of type ICommand, which is executed when the search query is confirmed.
  • CommandParameter, de tipo object, que es el parámetro que se pasa a Command.CommandParameter, of type object, which is the parameter that's passed to the Command.
  • DisplayMemberName, de tipo string, que representa el nombre o la ruta de acceso de la propiedad que se muestra para cada elemento de datos de la colección ItemsSource.DisplayMemberName, of type string, representing the name or path of the property that's displayed for each item of data in the ItemsSource collection.
  • FontAttributes, del tipo FontAttributes, indica si el texto del cuadro de búsqueda está en negrita o cursiva.FontAttributes, of type FontAttributes, indicates if the search box text is italic or bold.
  • FontFamily, del tipo string, es la familia de fuentes utilizada para el texto del cuadro de búsqueda.FontFamily, of type string, is the font family used for the search box text.
  • FontSize, del tipo double, es el tamaño del texto del cuadro de búsqueda.FontSize, of type double, is the size of the search box text.
  • HorizontalTextAlignment, del tipo TextAlignment, es la alineación horizontal del texto del cuadro de búsqueda.HorizontalTextAlignment, of type TextAlignment, is the horizontal alignment of the search box text.
  • IsFocused, del tipo bool, que representa si un SearchHandler actualmente tiene foco de entrada.IsFocused, of type bool, representing whether a SearchHandler currently has input focus.
  • IsSearchEnabled, de tipo bool, que representa el estado habilitado del cuadro de búsqueda.IsSearchEnabled, of type bool, representing the enabled state of the search box. El valor predeterminado es true.The default value is true.
  • ItemsSource, de tipo IEnumerable, especifica la colección de elementos que se mostrarán en el área de sugerencias, y tiene un valor predeterminado de null.ItemsSource, of type IEnumerable, specifies the collection of items to be displayed in the suggestion area, and has a default value of null.
  • ItemTemplate, de tipo DataTemplate, especifica la plantilla que se aplicará a cada elemento de la colección de elementos que se mostrará en el área de sugerencias.ItemTemplate, of type DataTemplate, specifies the template to apply to each item in the collection of items to be displayed in the suggestion area.
  • Keyboard, del tipo Keyboard, es el teclado para el SearchHandler.Keyboard, of type Keyboard, is the keyboard for the SearchHandler.
  • Placeholder, de tipo string, el texto que se muestra cuando el cuadro de búsqueda está vacío.Placeholder, of type string, the text to display when the search box is empty.
  • PlaceholderColor, del tipo Color, es el color del texto del cuadro de búsqueda del marcador de posición.PlaceholderColor, of type Color, is the color of the placeholder search box text.
  • Query, de tipo string, el texto especificado por el usuario en el cuadro de búsqueda.Query, of type string, the user entered text in the search box.
  • QueryIcon, de tipo ImageSource, el icono utilizado para indicar al usuario que la búsqueda está disponible.QueryIcon, of type ImageSource, the icon used to indicate to the user that search is available.
  • QueryIconHelpText, de tipo string, el texto de ayuda accesible para el icono de consulta.QueryIconHelpText, of type string, the accessible help text for the query icon.
  • QueryIconName, de tipo string, el nombre del icono de consulta para su uso con los lectores de pantalla.QueryIconName, of type string, the name of the query icon for use with screen readers.
  • SearchBoxVisibility, de tipo SearchBoxVisibility, la visibilidad del cuadro de búsqueda.SearchBoxVisibility, of type SearchBoxVisibility, the visibility of the search box. De forma predeterminada, el cuadro de búsqueda está visible y totalmente expandido.By default, the search box is visible and fully expanded.
  • SelectedItem, de tipo object, el elemento seleccionado en los resultados de búsqueda.SelectedItem, of type object, the selected item in the search results. Esta propiedad es de solo lectura y tiene un valor predeterminado de null.This property is read only, and has a default value of null.
  • ShowsResults, de tipo bool, indica si se deben esperar resultados de búsqueda en el área de sugerencias, al escribir texto.ShowsResults, of type bool, indicates whether search results should be expected in the suggestion area, on text entry. El valor predeterminado es false.The default value is false.
  • TextColor, del tipo Color, es el color del texto del cuadro de búsqueda.TextColor, of type Color, is the color of the search box text.

Todas estas propiedades están respaldados por objetos BindableProperty, lo que significa que las propiedades pueden ser destinos de los enlaces de datos.All of these properties are backed by BindableProperty objects, which means that the properties can be targets of data bindings.

Además, la clase SearchHandler proporciona los métodos reemplazables siguientes:In addition, the SearchHandler class provides the following overridable methods:

  • OnClearPlaceholderClicked, que se llama cada vez que se pulsa ClearPlaceholderIcon.OnClearPlaceholderClicked, that's called whenever the ClearPlaceholderIcon is tapped.
  • OnItemSelected, que se llama cada vez que el usuario selecciona un resultado de búsqueda.OnItemSelected, that's called whenever a search result is selected by the user.
  • OnFocused, al que se llama cuando un SearchHandler adquiere el foco de entrada.OnFocused, that's called when a SearchHandler acquires input focus.
  • OnQueryChanged, que se llama cuando cambia la propiedad Query.OnQueryChanged, that's called when the Query property changes.
  • OnQueryConfirmed, que se llama cada vez que el usuario presiona Entrar o confirma su consulta en el cuadro de búsqueda.OnQueryConfirmed, that's called whenever the user presses enter or confirms their query in the search box.
  • OnUnfocus, al que se llama cuando un SearchHandler pierde el foco de entrada.OnUnfocus, that's called when a SearchHandler loses input focus.