using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;
using System.ComponentModel;
namespace TestingAutoComplete
{
public partial class MainPage : PhoneApplicationPage
{
// Constructor
public MainPage()
{
InitializeComponent();
List names = new List();
string namesString = "Fernando Sucre,Scofield,Alexander Mahone,Theodore Bagwell,Sara Tancredi ,Lincoln Burrows,John Abruzzi,Fluorine";
foreach (var name in namesString.Split(','))
names.Add(name);
this.people1.ItemsSource = names;
this.people1.ItemFilter += SearchCountry;
}
//全局模糊搜索
bool SearchCountry(string search, object value)
{
if (value != null)
{
//如果包含了搜索的字符串则返回true
if (value.ToString().ToLower().IndexOf(search) >= 0)
return true;
}
// 如果不匹配 返回false
return false;
}
}
}
第二种方式使用的类
Name.cs
using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
namespace TestingAutoComplete
{
public class Name
{
public string MyName { get; set; }
public override string ToString()
{
return MyName;
}
}
}
Names.cs
using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.ComponentModel;
using System.Collections.ObjectModel;
namespace TestingAutoComplete
{
public class Names : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private ObservableCollection _listOfnames;
public ObservableCollection ListOfNames
{
get { return _listOfnames; }
set
{
_listOfnames = value;
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs("ListOfNames"));
}
}
public Names()
{
ListOfNames = new ObservableCollection();
string namesString = "Fernando Sucre,Scofield,Alexander Mahone,Theodore Bagwell,Sara Tancredi ,Lincoln Burrows,John Abruzzi,Fluorine";
foreach (var name in namesString.Split(','))
ListOfNames.Add(new Name() { MyName = name });
}
}
}
AutoCompleteBox控件常用方法:
PopulateComplete:通知AutoCompleteBox,ItemsSource属性已经确定,数据可以被过滤用以在下拉框中提供可能合适的匹配选项
。
组件常用属性:
FilterMode:获取或设置文本框中的文本怎样被用来过滤具体由为下拉内容准备的ItemsSource属性的项。
IsDropDownOpen:获取或设置一个值用以确定该组件的下拉部分是否已打开。
IsTextCompletionEnabled:该属性的作用是获取或设置一个值用以确定在过滤过程中第一个可能的匹配结果是否自动地被填充至
AutoCompleteBox组件中。有时我们需要第一个匹配的预选对象自动填充至AutoCompleteBox的文本框中,这时就需要通过设置该属
性以达到所需效果。
ItemFilter:获取或设置自定义方法用来使用用户输入的文本来过滤在下拉框中显示的具体由ItemsSource属性所决定的items。
MaxDropDownHeight:获取或设置该组件的下拉部分高度的最大值。
MinimumPopulateDelay:获取或设置第一个匹配结果出现的最小延迟时间。
MinimumPrefixLength:获取或设置需要被键入该组件文本框中的最小字符数量,在该组件显示可能的匹配之前。
SearchText:获取在itemsSource项目集合中被用作过滤项目的文本。
SelectionAdapter:获取或设置用以生成下拉选项部分的选择适配器,通过一个可选择的项目列表。
Text:获取或设置该组件文本框中的值。
TextBoxStyle:获取或设置该组件的文本框的样式。
TextFilter:获取或设置自定义方法用来使用用户输入的文本以基于文本的方式过滤在下拉框中显示的具体由ItemsSource属性所决
定的items。
ValueMemberBinding:获取或设置用于获取对在AutoCompleteBox控制文本框部分显示的值的绑定,为显示在下拉过滤项目。
ValueMemberPath:获取或设置用来获取为在AutoCompleteBox控制文本框部分显示的值的属性的路径,为显示在下拉筛选项目。