如何在Xamarin表单中实现搜索建议
问题描述:
我需要实现一个建议框,为此目的,我放置了一个Entry来接受关键字,并且正好在我使用Listview显示建议之下。 ListView已经有了DataSource和一些条目。现在我想实现它喜欢 -如何在Xamarin表单中实现搜索建议
“例如,如果关键词是:
- 牛奶
- 肉类
- 霜
和用户类型 “” 米“”,奶油被过滤掉,只显示牛奶和肉类,因为它们以“”m“”开头。当用户输入“”mi“”时,肉类也被过滤掉,只显示牛奶。
答
在这里你去
var list = new List<string> { "Milk", "Cream", "Meat" };
var myListView = new ListView();
myListView.ItemsSource = list;
var entry = new Entry();
entry.TextChanged += delegate(object sender, TextChangedEventArgs args)
{
if (string.IsNullOrEmpty(entry.Text))
{
myListView.ItemsSource = list;
}
else
{
myListView.ItemsSource = list
.Where(x => x.ToLower()
.StartsWith(entry.Text.ToLower()));
}
};
MainPage = new ContentPage()
{
Content = new StackLayout()
{
Children = { entry, myListView }
}
};
答
你可以把它区分大小写改变到以下:
myListView.ItemsSource = list.Where(x => x.ToLower().StartsWith(entry.Text.ToLower()));
嗨TheMoFaDe,这确实是很好的解决方案,但我在面对一个问题,它仅显示小写字母的结果,而不显示Capital Capital的结果。它不应该大小写敏感。如果用户输入“m”或“M”,则应列出所有以“m”或“M”开头的项目,反之亦然。 – Dipak
我解决它通过替换myListView.ItemsSource = list.Where(x => x.ToLower()。StartsWith(entry.Text)); ----- with ----- myListView.ItemsSource = list.Where(x => x.StartsWith(entry.Text)); -----但区分大小写。我不知道如何让它不区分大小写。 – Dipak