AutoCompleteBox.TextFilter Property


Gets or sets the custom method that uses the user-entered text to filter items specified by the ItemsSource property in a text-based way for display in the drop-down.

Namespace:  System.Windows.Controls
Assembly:  System.Windows.Controls.Input (in System.Windows.Controls.Input.dll)

public AutoCompleteFilterPredicate<string> TextFilter { get; set; }

Property Value

Type: System.Windows.Controls.AutoCompleteFilterPredicate<String>
The custom method that uses the user-entered text to filter items specified by the ItemsSource property in a text-based way for display in the drop-down.

The filter mode is automatically set to Custom if you set the TextFilter property.

Use the TextFilter property to provide custom text filtering for items displayed in the drop-down. Alternatively, you should use the ItemFilter to provide custom object filtering.

The following example shows how to set the FilterMode to Custom, and then set the ItemFilter property to a custom text filter method that evaluates the string returned from the ToString method of the Employee object. The custom filter returns matches from employees' first or last name. This code example requires a reference to the System.Windows.Controls.Input assembly.

List<Employee> employees = new List<Employee>();
public MainPage()
    // Add some items to the employee list.
    employees.Add(new Employee("Sells", "Chris", "csells", 1234));
    employees.Add(new Employee("Cabatana", "Reina", "rcaba", 5678));
    employees.Add(new Employee("Sprenger", "Christof", "cspreng", 9123));
    employees.Add(new Employee("Brandel", "Jonas", "jbrandel", 4567));
    employees.Add(new Employee("Bye", "Dennis", "dbye", 8912));
    employees.Add(new Employee("Reid", "Miles", "mreid", 3456));

    // Set the item source.
    myACB.ItemsSource = employees;


// Set the TextFilter property to the search method.
myACB.TextFilter += SearchEmployees;




bool SearchEmployees(string search, string value)
    value = value.ToLower();
    // Split the string a new line.
    string[] words = value.Split(System.Environment.NewLine.ToCharArray(),

    string[] names = words[0].Split(' ');

    // Look for a match in the first line; discarding the "employee:" entry.
    foreach (string name in names)
        if (name != "employee:")
            if (name.StartsWith(search))
                return true;
    // If no match, return false.
    return false;


public class Employee
    public string LastName { get; set; }
    public string FirstName { get; set; }
    public string EmailName { get; set; }
    public int ID { get; set; }
    public Employee(string empLastName, string empFirstName, string empEmail, int empID)
        LastName = empLastName;
        FirstName = empFirstName;
        EmailName = empEmail;
        ID = empID;
    public override string ToString()
        return "Employee: " + FirstName + " " + 
            LastName + System.Environment.NewLine + 
            "Email: " + EmailName + System.Environment.NewLine + "ID: " +

<StackPanel x:Name="LayoutRoot" Background="LightGray">
     <TextBlock FontWeight="Bold" Text="AutoCompleteBox Custom Filter Example" Margin="5"/>
     <StackPanel  Orientation="Horizontal">
         <TextBlock Text="Employee:" Margin="5" HorizontalAlignment="Left"  VerticalAlignment="Center"/>
         <sdk:AutoCompleteBox Height="75" Width="200" VerticalAlignment="Center" HorizontalAlignment="Right" 
         x:Name="myACB" FilterMode="Custom" ToolTipService.ToolTip="Enter employee name."/>


Supported in: 5, 4, 3

For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.

Community Additions