Xamarin.Forms Searchbar
Xamarin.FormsSearchBar , arama başlatan bir kullanıcı girişi denetimidir. Denetim SearchBar yer tutucu metni, sorgu girişini, arama yürütmeyi ve iptali destekler. Aşağıdaki ekran görüntüsünde, SearchBar sonuçların bir içinde görüntülendiğinden bir sorgu ListView gösterilir:
sınıfı SearchBar aşağıdaki özellikleri tanımlar:
- Xamarin_Forms _SearchBar_CancelButtonColor" data-linktype="absolute-path">iptal düğmesinin rengini tanımlayan
CancelButtonColorColorbir. CharacterSpacingtüründe,doublemetnin karakterleri arasındakiSearchBarboşluk.- Xamarin_Forms _SearchBar_FontAttributes" data-linktype="absolute-path">yazı tipinin kalın, italik veya hiçbiri olduğunu belirleyen bir
FontAttributesFontAttributesenumSearchBardeğeridir. - Xamarin_Forms _SearchBar_FontFamily" data-linktype="absolute-path">, tarafından kullanılan yazı tipi ailesini belirleyen
FontFamilystringbir 'dır.SearchBar - Xamarin_Forms _SearchBar_FontSize" data-linktype="absolute-path">bir enum değeri veya platformlar arasında belirli yazı tipi boyutlarını temsil eden
FontSizebir değerNamedSizedoubleolabilir. - Xamarin_Forms _SearchBar_HorizontalTextAlignment" data-linktype="absolute-path">, sorgu metninin yatay hizalamasını tanımlayan bir
HorizontalTextAlignmentTextAlignmentenum değeridir. VerticalTextAlignment, sorguTextAlignmentmetninin dikey hizalamasını tanımlayan bir sabit değerdir.- Xamarin_Forms _InputView_Placeholder" data-linktype="absolute-path">, "Ara..." gibi yer tutucu metni tanımlayan
Placeholderstringbir ifadedir. - Xamarin_Forms _InputView_PlaceholderColor" data-linktype="absolute-path">, yer tutucu metnin rengini tanımlayan
PlaceholderColorColorbir ifadedir. - Xamarin_Forms _SearchBar_SearchCommand" data-linktype="absolute-path">, parmak dokunuşları veya tıklamalar gibi kullanıcı eylemlerini bir görünüm modelde tanımlanan komutlara bağlamaya olanak sağlayan bir
SearchCommandICommandaraçtır. - Xamarin_Forms _SearchBar_SearchCommandParameter" data-linktype="absolute-path">, parametresine geçirilene parametreyi
SearchCommandParameterobjectbelirten bir'tir.SearchCommand - Xamarin_Forms _InputView_Text" data-linktype="absolute-path">içinde sorgu metnini
Textiçerenstringbir .SearchBar - Xamarin_Forms _InputView_TextColor" data-linktype="absolute-path">, sorgu metni rengini
TextColorColortanımlayan bir. TextTransform,TextTransformmetnin büyük/küçük yazısını belirleyen birSearchBardeğerdir.
Bu özellikler nesneler tarafından BindableProperty de desteklene, bu da özelleştirebileceğiniz ve veri SearchBar bağlamalarının hedefi olduğu anlamına gelir. üzerinde yazı tipi özelliklerini SearchBar belirtmek, diğer üzerinde metni özelleştirmeyle tutarlıdır. Xamarin.Forms Text controls Daha fazla bilgi için bkz. Fonts in Xamarin.Forms.
SearchBar oluşturma
SearchBarXAML'de bir örneği olabilir. İsteğe Placeholder bağlı özelliği, sorgu giriş kutusunda ipucu metnini tanımlamak için ayarlanmış olabilir. için varsayılan değer Placeholder boş bir dizedir, bu nedenle ayarlanmayacaksa yer tutucu görünmez. Aşağıdaki örnekte, isteğe bağlı özellik kümesiyle SearchBar XAML'de bir örneği Placeholder nasıl örneklendirildirilmektedir:
<SearchBar Placeholder="Search items..." />
Kodda SearchBar da bir oluşturulabilir:
SearchBar searchBar = new SearchBar{ Placeholder = "Search items..." };
SearchBar görünüm özellikleri
Denetim, SearchBar denetimin görünümünü özelleştiren birçok özelliği tanımlar. Aşağıdaki örnekte, belirtilen birden çok özellik ile SearchBar XAML'de bir örneği nasıl olduğu gösterir:
<SearchBar Placeholder="Search items..."
CancelButtonColor="Orange"
PlaceholderColor="Orange"
TextColor="Orange"
TextTransform="Lowercase"
HorizontalTextAlignment="Center"
FontSize="Medium"
FontAttributes="Italic" />
Kodda bir nesne oluşturulurken de bu SearchBar özellikler belirtilebilir:
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
};
Aşağıdaki ekran görüntüsünde sonuçta elde edilen denetim SearchBar yer alenidir:
ve Android'de özelleştirilmiş
ekran görüntüsü iOS ve Arama Çubuğu
Not
iOS'ta SearchBarRenderer sınıfı geçersiz kılınabilir bir yöntem UpdateCancelButton içerir. Bu yöntem, iptal düğmesinin ne zaman görüntülendiğinde kontrol eder ve özel bir işleyicide geçersiz kılınabilir. Özel işleyiciler hakkında daha fazla bilgi için bkz. Xamarin.Forms Custom Renderers .
Olay işleyicileri ile arama gerçekleştirme
Bir arama, aşağıdaki olaylardan SearchBar biri için bir olay işleyicisi ekleyen denetimi kullanılarak yürütül olabilir:
SearchButtonPressedkullanıcı arama düğmesine tıkladığında veya Enter tuşuna basdığında çağrılır.TextChanged, sorgu kutusunda metin her değiştiriken çağrılır.
Aşağıdaki örnekte, XAML'de olayına eklenmiş TextChanged bir olay işleyicisi gösterilir ve arama sonuçlarını görüntülemek için bir ListView kullanır:
<SearchBar TextChanged="OnTextChanged" />
<ListView x:Name="searchResults" >
Olay işleyicisi, kodda oluşturulan bir SearchBar işleyiciye de iliştirilmiş olabilir:
SearchBar searchBar = new SearchBar {/*...*/};
searchBar.TextChanged += OnTextChanged;
XAML veya kod aracılığıyla oluşturulsa da arka arkasındaki TextChangedSearchBar kod dosyasındaki olay işleyicisi aynıdır:
void OnTextChanged(object sender, EventArgs e)
{
SearchBar searchBar = (SearchBar)sender;
searchResults.ItemsSource = DataService.GetSearchResults(searchBar.Text);
}
Önceki örnek, bir sorguyla eşan öğeleri DataService döndürebilecek bir GetSearchResults yönteme sahip bir sınıfın varlığını ifade eder. SearchBarDenetimin Text özellik değeri yöntemine GetSearchResults geçirildi ve sonuç denetimin özelliğini ListView güncelleştirmek için ItemsSource kullanılır. Genel etki, arama sonuçlarının denetimde ListView görüntülenebilir.
Örnek uygulama, arama DataService işlevselliğini test etmek için kullanılan bir sınıf uygulaması sağlar.
Viewmodel kullanarak arama gerçekleştirme
Ve özellikleri uygulamalara bağlanarak olay işleyicileri SearchCommandSearchCommandParameter olmadan bir arama ICommand yürütülebilirsiniz. Örnek proje, Model-View-ViewModel (MVVM) desenini kullanarak bu uygulamaları gösterir. MVVM ile veri bağlamaları hakkında daha fazla bilgi için bkz. MVVM ile Veri Bağlamaları.
Örnek uygulamanın viewmodel'i aşağıdaki kodu içerir:
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();
}
}
}
Not
Viewmodel, arama gerçekleştirebilecek bir DataService sınıfın var olduğunu varsayıyor. Örnek DataService veriler de dahil olmak üzere sınıfı, örnek uygulamada kullanılabilir.
Aşağıdaki XAML, arama sonuçlarını görüntüleyen bir denetimle örnek SearchBar viewmodel'e bir ListView bağlamayı gösterir:
<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>
Bu örnek, BindingContext sınıf örneği olarak SearchViewModel ayarlar. viewmodel'de özelliğini ile bağlar ve SearchCommandPerformSearchICommand özelliğini SearchBarText özelliğine SearchCommandParameter bağlar. ListView.ItemsSourceözelliği, SearchResults viewmodel'in özelliğine bağlı.
Arabirim ve bağlamalar hakkında ICommand daha fazla bilgi için Xamarin.Forms data binding bkz. ve ICommand
Örneği indirme
ekran