2016-06-08 72 views
2

我需要實現一個建議框,爲此目的,我放置了一個Entry來接受關鍵字,並且正好在我使用Listview顯示建議之下。 ListView已經有了DataSource和一些條目。現在我想實現它喜歡 -如何在Xamarin表單中實現搜索建議

「例如,如果關鍵詞是:

  • 牛奶
  • 肉類

和用戶類型 「」 米「」,奶油被過濾掉,只顯示牛奶和肉類,因爲它們以「」m「」開頭。當用戶輸入「」mi「」時,肉類也被過濾掉,只顯示牛奶。

回答

3

在這裏你去

 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

-1

你可以把它區分大小寫改變到以下:

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