Searchbar
.NET Multi-platform App UI (.NET MAUI) SearchBar adalah kontrol input pengguna yang digunakan untuk memulai pencarian. Kontrol SearchBar mendukung teks tempat penampung, input kueri, eksekusi pencarian, dan pembatalan. Cuplikan layar iOS berikut menunjukkan SearchBar kueri dengan hasil yang ditampilkan dalam :ListView
SearchBar menentukan properti berikut:
CancelButtonColor
adalah Color yang mendefinisikan warna tombol batalkan.HorizontalTextAlignment
adalahTextAlignment
nilai enum yang menentukan perataan horizontal teks kueri.SearchCommand
adalah yang ICommand memungkinkan mengikat tindakan pengguna, seperti ketukan jari atau klik, ke perintah yang ditentukan pada viewmodel.SearchCommandParameter
object
adalah yang menentukan parameter yang harus diteruskan keSearchCommand
.VerticalTextAlignment
adalahTextAlignment
nilai enum yang menentukan perataan vertikal teks kueri.
Properti ini didukung oleh BindableProperty objek, yang berarti bahwa properti ini dapat menjadi target pengikatan data, dan ditata.
Selain itu, SearchBar menentukan SearchButtonPressed
peristiwa, yang dinaikkan saat tombol pencarian diklik, atau tombol enter ditekan.
SearchBar berasal dari InputView kelas , dari mana ia mewarisi properti berikut:
CharacterSpacing
, dari jenisdouble
, mengatur penspasian antar karakter dalam teks yang dimasukkan.CursorPosition
, dari jenisint
, mendefinisikan posisi kursor dalam editor.FontAttributes
, dari jenisFontAttributes
, menentukan gaya teks.FontAutoScalingEnabled
, dari jenisbool
, menentukan apakah teks akan mencerminkan preferensi penskalaan yang diatur dalam sistem operasi. Nilai default properti ini adalahtrue
.FontFamily
, dari jenisstring
, mendefinisikan keluarga font.FontSize
, dari jenisdouble
, mendefinisikan ukuran font.IsReadOnly
, dari jenisbool
, menentukan apakah pengguna harus dicegah untuk memodifikasi teks. Nilai default properti ini adalahfalse
.IsSpellCheckEnabled
, dari jenisbool
, mengontrol apakah pemeriksaan ejaan diaktifkan.IsTextPredictionEnabled
, dari jenisbool
, mengontrol apakah prediksi teks dan koreksi teks otomatis diaktifkan.Keyboard
, dari jenisKeyboard
, menentukan keyboard input lunak yang ditampilkan saat memasukkan teks.MaxLength
, dari jenisint
, mendefinisikan panjang input maksimum.Placeholder
, dari jenisstring
, menentukan teks yang ditampilkan saat kontrol kosong.PlaceholderColor
, dari jenis Color, menentukan warna teks tempat penampung.SelectionLength
, dari jenisint
, mewakili panjang teks yang dipilih dalam kontrol.Text
, dari jenisstring
, menentukan teks yang dimasukkan ke dalam kontrol.TextColor
, dari jenis Color, menentukan warna teks yang dimasukkan.TextTransform
, dari jenisTextTransform
, menentukan casing teks yang dimasukkan.
Properti ini didukung oleh BindableProperty objek, yang berarti bahwa properti ini dapat menjadi target pengikatan data, dan ditata.
Selain itu, InputView menentukan TextChanged
peristiwa, yang dimunculkan saat teks dalam Entry perubahan. Objek TextChangedEventArgs
yang menyertai TextChanged
peristiwa memiliki NewTextValue
properti dan OldTextValue
, yang masing-masing menentukan teks baru dan lama.
Membuat Bilah Pencarian
Untuk membuat bilah pencarian, buat SearchBar objek dan atur propertinya Placeholder
ke teks yang menginstruksikan pengguna untuk memasukkan istilah pencarian.
Contoh XAML berikut menunjukkan cara membuat SearchBar:
<SearchBar Placeholder="Search items..." />
Kode C# yang setara adalah:
SearchBar searchBar = new SearchBar { Placeholder = "Search items..." };
Catatan
Di iOS, keyboard input lunak dapat mencakup bidang input teks saat bidang berada di dekat bagian bawah layar, sehingga sulit untuk memasukkan teks. Namun, dalam aplikasi .NET MAUI iOS, halaman secara otomatis menggulir saat keyboard input lunak akan mencakup bidang entri teks, sehingga bidang berada di atas keyboard input lunak. Metode KeyboardAutoManagerScroll.Disconnect
ini, di Microsoft.Maui.Platform
namespace, dapat dipanggil untuk menonaktifkan perilaku default ini. Metode KeyboardAutoManagerScroll.Connect
ini dapat dipanggil untuk mengaktifkan kembali perilaku setelah dinonaktifkan.
Melakukan pencarian dengan penanganan aktivitas
Pencarian dapat dijalankan menggunakan SearchBar kontrol dengan melampirkan penanganan aktivitas ke salah satu peristiwa berikut:
SearchButtonPressed
, yang dipanggil ketika pengguna mengklik tombol pencarian atau menekan tombol enter.TextChanged
, yang dipanggil kapan saja teks dalam kotak kueri diubah. Kejadian ini diwariskan dari InputView kelas .
Contoh XAML berikut menunjukkan penanganan aktivitas yang dilampirkan ke TextChanged
peristiwa dan menggunakan ListView untuk menampilkan hasil pencarian:
<SearchBar TextChanged="OnTextChanged" />
<ListView x:Name="searchResults" >
Dalam contoh ini, TextChanged
peristiwa diatur ke penanganan aktivitas bernama OnTextChanged
. Handler ini terletak di file code-behind:
void OnTextChanged(object sender, EventArgs e)
{
SearchBar searchBar = (SearchBar)sender;
searchResults.ItemsSource = DataService.GetSearchResults(searchBar.Text);
}
Dalam contoh ini, DataService
kelas dengan metode digunakan untuk mengembalikanitem yang cocok dengan GetSearchResults
kueri. Nilai SearchBar properti kontrol Text
diteruskan ke GetSearchResults
metode dan hasilnya digunakan untuk memperbarui ListView properti kontrol ItemsSource
. Efek keseluruhan adalah bahwa hasil pencarian ditampilkan di ListView.
Melakukan pencarian menggunakan viewmodel
Pencarian dapat dijalankan tanpa penanganan aktivitas dengan mengikat SearchCommand
properti ke ICommand implementasi. Untuk informasi selengkapnya tentang perintah, lihat Memerintahkan.
Contoh berikut menunjukkan kelas viewmodel yang berisi ICommand properti bernama 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();
}
}
}
Catatan
Viewmodel mengasumsikan keberadaan kelas yang DataService
mampu melakukan pencarian.
Contoh XAML berikut menggunakan SearchViewModel
kelas :
<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>
Dalam contoh ini, BindingContext
diatur ke instans SearchViewModel
kelas. Properti SearchBar.SearchCommand
mengikat properti PerformSearch
viewmodel, dan SearchCommandParameter
properti mengikat ke SearchBar.Text
properti . Demikian pula, ListView.ItemsSource
properti terikat ke SearchResults
properti viewmodel.
Sembunyikan dan tampilkan keyboard input lunak
Kelas SoftInputExtensions
, di Microsoft.Maui
namespace, menyediakan serangkaian metode ekstensi yang mendukung interaksi dengan keyboard input lunak pada kontrol yang mendukung input teks. Kelas menentukan metode berikut:
IsSoftInputShowing
, yang memeriksa untuk melihat apakah perangkat saat ini menunjukkan keyboard input lunak.HideSoftInputAsync
, yang akan mencoba menyembunyikan keyboard input lunak jika saat ini ditampilkan.ShowSoftInputAsync
, yang akan mencoba menampilkan keyboard input lunak jika saat ini disembunyikan.
Contoh berikut menunjukkan cara menyembunyikan keyboard input lunak pada SearchBar bernama searchBar
, jika saat ini ditampilkan:
if (searchBar.IsSoftInputShowing())
await searchBar.HideSoftInputAsync(System.Threading.CancellationToken.None);
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk