- в качестве первого шага, создайте страницу с текстовым полем и списком.
- Создайте класс ViewModel и установите его в свойстве DataContext вашего списка.
- DataBinding TextBox.Text, например, строка SearchTerm свойство вашей модели. Свойство DataBind ListBox.ItemsSource отображает список ваших контактов в вашей модели viewmodel.
Когда это работает, давайте начнем с фильтрации. Мы будем использовать CollectionView для фильтрации в реальном времени.
- CollectionView может фильтровать вашу контактную коллекцию на основе предиката. Мы создадим новый вид коллекции, определим его фильтр на основе свойства SearchTerm.
- DataBindid listbox.ItemsSource для CollectionView instear из оригинала Контакты
- В 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; }
}
Вы можете взглянуть на этот вопрос: [Управление показывает через выпадающий список ComboBox на Windows Phone 8.1] (http: // stackoverflow.com/questions/24577123/controls-show-through-combobox-dropdown-on-windows-phone-8-1) –