2014-10-29 20 views
5

Tôi đang cố gắng sử dụng tiêu chuẩn AutoSuggestBox trong ứng dụng Windows Phone 8.1 XAML, nhưng nó hoạt động thực sự kỳ lạ.Kết quả lạ trong AutoSuggestBox trong Windows Phone 8.1

Trong một bản demo đơn giản, tôi có bộ sưu tập

Items = new ObservableCollection<string> 
     { 
      "a", 
      "b", 
      "c", 
      "d" 
     }; 

và ông AutoSuggestBox trong XAML:

<AutoSuggestBox ItemsSource="{Binding Items}" /> 

Vấn đề là không có vấn đề gì tôi viết thư cho AutoSuggestBox, tôi luôn nhận được tất cả các các mặt hàng:

enter image description here

Th e tài liệu nói bên cạnh không có gì và tôi đã không tìm thấy bất kỳ mẫu sử dụng điều khiển này.

Trả lời

4

Dựa trên this blog post, có vẻ như những gì bạn mong đợi (lọc tự động) không phải là trường hợp - thay vào đó, bạn cần phải móc vào sự kiện TextChanged và tự mình tập hợp bộ sưu tập Suggestions.

Từ documentation:

Ứng dụng này được thông báo khi văn bản đã được thay đổi bởi người sử dụng và có trách nhiệm cung cấp các đề xuất liên quan để kiểm soát này để hiển thị.

6

Hãy thử đoạn mã sau:

private void AutoSuggestBox_TextChanged(AutoSuggestBox sender, 
     AutoSuggestBoxTextChangedEventArgs args) 
    { 
      List<string> myList = new List<string>(); 
      foreach (string myString in PreviouslyDefinedStringArray) 
      { 
       if (myString.Contains(sender.Text) == true) 
       { 
        myList.Add(myString); 
       } 
      } 
      sender.ItemsSource = myList; 
    } 

này nên làm việc trên WP 8.1

+0

một chút dư thừa, khi tôi đã chấp nhận một câu trả lời nói với tôi như vậy –

+0

Bất kể, nhờ một giải pháp làm việc, Anmar – Freakishly

+0

nó hoàn toàn ok để gửi mã; bài đăng trên blog được đề cập trong câu trả lời được chấp nhận có thể không khả dụng hoặc di chuyển trong tương lai. Mã xử lý sự kiện nên được bao bọc trong 'if (args.Reason == AutoSuggestionBoxTextChangeReason.UserInput) {...}' để tránh dự phòng khi một gợi ý được chọn, hoặc văn bản được thay đổi theo lập trình. – dlatikay

Các vấn đề liên quan