如何在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 } 
       } 

      }; 
+0

嗨TheMoFaDe,这确实是很好的解决方案,但我在面对一个问题,它仅显示小写字母的结果,而不显示Capital Capital的结果。它不应该大小写敏感。如果用户输入“m”或“M”,则应列出所有以“m”或“M”开头的项目,反之亦然。 – Dipak

+0

我解决它通过替换myListView.ItemsSource = list.Where(x => x.ToLower()。StartsWith(entry.Text)); ----- with ----- myListView.ItemsSource = list.Where(x => x.StartsWith(entry.Text)); -----但区分大小写。我不知道如何让它不区分大小写。 – Dipak

你可以把它区分大小写改变到以下:

myListView.ItemsSource = list.Where(x => x.ToLower().StartsWith(entry.Text.ToLower()));