Xamarin.Forms Searchbar
Xamarin.FormsSearchBar je ovládací prvek uživatelského vstupu, který se používá k zahájení vyhledávání. Ovládací SearchBar prvek podporuje zástupný text, vstup dotazu, provádění vyhledávání a zrušení. Následující snímek obrazovky SearchBar ukazuje dotaz s výsledky zobrazenými v ListView :
Třída SearchBar definuje následující vlastnosti:
- Xamarin_Forms _SearchBar_CancelButtonColor data-linktype="absolute-path">je hodnota, která definuje barvu tlačítka
CancelButtonColorColorzrušit. CharacterSpacingtypdoubleje mezera mezi znakySearchBartextu.- Xamarin_Forms _SearchBar_FontAttributes" data-linktype="absolute-path">je hodnota výčtu, která určuje, jestli je písmo
FontAttributesFontAttributestučné,SearchBarkurzíva nebo ani jedno. - Xamarin_Forms _SearchBar_FontFamily" data-linktype="absolute-path">je třída, která určuje rodinu písem
FontFamilystringpoužívnou objektemSearchBar. - Xamarin_Forms _SearchBar_FontSize" data-linktype="absolute-path">může být hodnota výčtu nebo hodnota, která představuje konkrétní velikosti písem
FontSizeNamedSizedoublenapříč platformami. - Xamarin_Forms _SearchBar_HorizontalTextAlignment" data-linktype="absolute-path">je hodnota výčtu, která definuje vodorovné zarovnání
HorizontalTextAlignmentTextAlignmenttextu dotazu. VerticalTextAlignmentjeTextAlignmenthodnota výčtu, která definuje svislé zarovnání textu dotazu.- Xamarin_Forms _InputView_Placeholder" data-linktype="absolute-path">je objekt, který definuje zástupný text, například
Placeholderstring"Search...". - Xamarin_Forms _InputView_PlaceholderColor" data-linktype="absolute-path">je , která definuje barvu
PlaceholderColorColorzástupného textu. - Xamarin_Forms _SearchBar_SearchCommand" data-linktype="absolute-path">je objekt, který umožňuje svázání uživatelských akcí, jako jsou klepnutí prstem nebo kliknutí prstem, na příkazy definované
SearchCommandu modeluICommandviewmodel. - Xamarin_Forms _SearchBar_SearchCommandParameter" data-linktype="absolute-path">
SearchCommandParameterjeobjectparametr, který se má předatSearchCommanddo . - Xamarin_Forms _InputView_Text" data-linktype="absolute-path">je objekt obsahující
Texttextstringdotazu vSearchBar. - Xamarin_Forms _InputView_TextColor" data-linktype="absolute-path">je objekt , který definuje barvu
TextColorColortextu dotazu. TextTransformjeTextTransformhodnota, která určuje velikost kaskádySearchBartextu.
Tyto vlastnosti jsou zálohovány objekty, což znamená, že lze přizpůsobit a BindablePropertySearchBar být cílem datových vazeb. Zadání vlastností písma v objektu SearchBar je konzistentní s přizpůsobením textu v jiných Xamarin.Forms Text controls objektech . Další informace naleznete v tématu Fonts in Xamarin.Forms.
Vytvoření panelu hledání
Instanci SearchBar lze vytvořit v jazyce XAML. Volitelnou Placeholder vlastnost lze nastavit tak, aby definujte text nápovědy ve vstupním poli dotazu. Výchozí hodnota pro je prázdný řetězec, takže pokud není nastavený, nezobrazí se Placeholder žádný zástupný symbol. Následující příklad ukazuje, jak vytvořit instanci v SearchBar jazyce XAML s volitelnou Placeholder nastavenou vlastností:
<SearchBar Placeholder="Search items..." />
Objekt SearchBar lze také vytvořit v kódu:
SearchBar searchBar = new SearchBar{ Placeholder = "Search items..." };
Vlastnosti vzhledu SearchBar
Ovládací SearchBar prvek definuje mnoho vlastností, které přizpůsobují vzhled ovládacího prvku. Následující příklad ukazuje, jak vytvořit instanci v SearchBar jazyce XAML s více zadanými vlastnostmi:
<SearchBar Placeholder="Search items..."
CancelButtonColor="Orange"
PlaceholderColor="Orange"
TextColor="Orange"
TextTransform="Lowercase"
HorizontalTextAlignment="Center"
FontSize="Medium"
FontAttributes="Italic" />
Tyto vlastnosti lze zadat také při vytváření SearchBar objektu v kódu:
SearchBar searchBar = new SearchBar
{
Placeholder = "Search items...",
PlaceholderColor = Color.Orange,
TextColor = Color.Orange,
TextTransform = TextTransform.Lowercase,
HorizontalTextAlignment = TextAlignment.Center,
FontSize = Device.GetNamedSize(NamedSize.Medium, typeof(SearchBar)),
FontAttributes = FontAttributes.Italic
};
Výsledný ovládací prvek je znázorněný na následujícím SearchBar snímku obrazovky:
obrazovky s přizpůsobenou vyhledávacím panelem v iOSu a Androidu Přizpůsobený panel
a Androidu
Poznámka
V iOSu SearchBarRenderer obsahuje třída přepisitelnou UpdateCancelButton metodu. Tato metoda řídí, kdy se zobrazí tlačítko zrušit, a je možné ho přepsat ve vlastním rendereru. Další informace o vlastních rendererech najdete v tématu Xamarin.Forms Custom Renderers .
Vyhledávání pomocí obslužných rutin událostí
Vyhledávání lze spustit pomocí ovládacího prvku připojením obslužné rutiny SearchBar události k jedné z následujících událostí:
SearchButtonPressedse volá, když uživatel buď klikne na tlačítko hledání, nebo stiskne klávesu Enter.TextChangedse volá při změně textu v poli dotazu.
Následující příklad ukazuje obslužnou rutinu události připojenou k události v jazyce XAML a používá TextChanged k zobrazení výsledků hledání objekt ListView :
<SearchBar TextChanged="OnTextChanged" />
<ListView x:Name="searchResults" >
Obslužnou rutinu události je také možné připojit k SearchBar vytvořenému kódu:
SearchBar searchBar = new SearchBar {/*...*/};
searchBar.TextChanged += OnTextChanged;
Obslužná rutina události v souboru kódu je stejná bez ohledu na to, jestli je TextChanged vytvořen pomocí XAML nebo SearchBar kódu:
void OnTextChanged(object sender, EventArgs e)
{
SearchBar searchBar = (SearchBar)sender;
searchResults.ItemsSource = DataService.GetSearchResults(searchBar.Text);
}
Předchozí příklad naznačuje existenci třídy s metodou, která může vracet DataServiceGetSearchResults položky, které odpovídají dotazu. Hodnota SearchBar vlastnosti ovládacího prvku se předá metodě a výsledek se použije k aktualizaci TextGetSearchResults vlastnosti ListViewItemsSource ovládacího prvku. Celkovým efektem je, že se výsledky hledání zobrazují v ovládacím ListView prvku.
Ukázková aplikace poskytuje implementaci DataService třídy, kterou lze použít k testování funkcí vyhledávání.
Hledání pomocí modelu viewmodel
Vyhledávání lze spustit bez obslužných rutin událostí vytvořením vazby vlastností a SearchCommandSearchCommandParameter k ICommand implementacím. Ukázkový projekt demonstruje tyto implementace pomocí modelu Model-View-ViewModel (MVVM). Další informace o datových vazbách s MVVM najdete v tématu Datové vazby s MVVM.
Model viewmodel v ukázkové aplikaci obsahuje následující kód:
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();
}
}
}
Poznámka
Model viewmodel předpokládá existenci třídy DataService schopné provádět vyhledávání. Třída, DataService včetně ukázkových dat, je k dispozici v ukázkové aplikaci.
Následující kód XAML ukazuje, jak vytvořit vazbu k příkladu modelu viewmodel s ovládacím prvku SearchBarListView zobrazující výsledky hledání:
<ContentPage ...>
<ContentPage.BindingContext>
<viewmodels:SearchViewModel />
</ContentPage.BindingContext>
<StackLayout ...>
<SearchBar x:Name="searchBar"
...
SearchCommand="{Binding PerformSearch}"
SearchCommandParameter="{Binding Text, Source={x:Reference searchBar}}"/>
<ListView x:Name="searchResults"
...
ItemsSource="{Binding SearchResults}" />
</StackLayout>
</ContentPage>
Tento příklad BindingContext nastaví jako instanci SearchViewModel třídy . Sváže SearchCommand vlastnost s PerformSearchICommand objektem v modelu viewmodel a sváže SearchBarText vlastnost s SearchCommandParameter vlastností . Vlastnost ListView.ItemsSource je svázaná SearchResults s vlastností modelu viewmodel.
Další informace o rozhraní a ICommand vazbách najdete v tématu a Xamarin.Forms data binding rozhraní ICommand.
Stažení ukázky
v iOSu a