0

Я новичок в разработке приложений, поэтому просто хочу сказать, что у меня нет большого опыта работы с C#. Поэтому, пожалуйста, прост.Создайте выпадающий списокBox на Windows Phone 8.1?

Мне нужно создать раскрывающийся список с текстовым полем. Например, когда вы вводите письмо, выпадающий список показывает наиболее вероятные слова, доступные в списке. И список должен постоянно обновляться каждый раз, когда набирается буква.

+0

Вы можете взглянуть на этот вопрос: [Управление показывает через выпадающий список ComboBox на Windows Phone 8.1] (http: // stackoverflow.com/questions/24577123/controls-show-through-combobox-dropdown-on-windows-phone-8-1) –

ответ

1

Я бы посоветовал вам не идти с выпадающим списком с текстовым полем. это настольный вид контроля. для мобильных пользователей это не удобно для использования этого вида контроля.

потому что, когда вы вводите клавиатуру, скрывается 60% экрана. то вам нужно нажать, чтобы скрыть клавиатуру после ввода 1 буквы. затем просмотрите результаты и добавьте еще 1 письмо. Много пользовательских взаимодействий, которые не сделают ваших пользователей счастливыми.

Windows Phone обычно использует длинный список выбор для подобных случаев:

примера: https://msdn.microsoft.com/en-us/library/windows/apps/jj244365(v=vs.105).aspx

enter image description here

0
  1. в качестве первого шага, создайте страницу с текстовым полем и списком.
  2. Создайте класс ViewModel и установите его в свойстве DataContext вашего списка.
  3. DataBinding TextBox.Text, например, строка SearchTerm свойство вашей модели. Свойство DataBind ListBox.ItemsSource отображает список ваших контактов в вашей модели viewmodel.

Когда это работает, давайте начнем с фильтрации. Мы будем использовать CollectionView для фильтрации в реальном времени.

  1. CollectionView может фильтровать вашу контактную коллекцию на основе предиката. Мы создадим новый вид коллекции, определим его фильтр на основе свойства SearchTerm.
  2. DataBindid listbox.ItemsSource для CollectionView instear из оригинала Контакты
  3. В PropertyTreter для SearchTerm нам нужно вызвать Refresh on CollectionView, поэтому структура знает, что ему нужно переустановить наш список.

Окончательный XAML:

<DockPanel> 
    <TextBox Text="{Binding SearchTerm, UpdateSourceTrigger=PropertyChanged}" 
      DockPanel.Dock="Top"/> 
    <ListBox ItemsSource="{Binding FilteredContacts}" /> 
</DockPanel> 

C#:

public class ViewModel : INotifyPropertyChanged 
{ 
    private string _searchTerm; 

    public ViewModel() 
    { 
     Contacts = new ObservableCollection<string> 
     { 
      "Peter", "Daniel", "Kate", "John", "Anthony", "Laura", "Charles" 
     }; 
     FilteredContacts = new ListCollectionView(Contacts); 
     FilteredContacts.Filter = contact => string.IsNullOrWhiteSpace(SearchTerm) || ((string)contact).Contains(SearchTerm); 
    } 

    public string SearchTerm 
    { 
     get { return _searchTerm; } 
     set 
     { 
      if (value == _searchTerm) return; 
      _searchTerm = value; 
      OnPropertyChanged("SearchTerm"); 
      FilteredContacts.Refresh(); 
     } 
    } 

    public ObservableCollection<string> Contacts { get; private set; } 
    public CollectionView FilteredContacts { get; private set; } 
} 
+0

Итак, что такое ViewModel и как его создать? Это просто еще один класс, который я должен создать или какую-то определенную вещь? – Alchemist

+0

Это не предопределенный класс. ViewModel - это в основном любой класс, который вы рассматриваете в DataContext вашей страницы или UserControl. Он должен реализовывать интерфейс INotifyPropertyChanged: https://msdn.microsoft.com/en-us/library/ms743695(v=vs.110).aspx Класс ViewModel хранит данные и поведение, с которыми вы привязываетесь к данным на своих страницах. Обычно у вас есть один класс модели просмотра на странице. Например, Page1ViewModel, Page2ViewModel и т. Д. – Liero

-1

В Windows Phone 8.1, функциональность выпадающий достигается ComboBoxes. Этот учебник должен помочь вам: http://www.c-sharpcorner.com/UploadFile/2d2d83/combobox-in-windows-phone-8-1/

Примечание: Я предполагаю, что вы создаете приложения Windows Phone 8.1 на основе среды выполнения WinRT. Более старая среда Silverlight не имеет поддержки для выпадающего списка. (Хотя вы можете использовать Windows Phone toolkit для достижения того же)

+0

Это не отвечает его самому основному требованию - поиск по типу или фильтрация в реальном времени – Liero