AutoCompleteBox.ItemFilter Property

Silverlight

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

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

'Declaration
Public Property ItemFilter As AutoCompleteFilterPredicate(Of Object)

Property Value

Type: System.Windows.Controls.AutoCompleteFilterPredicate(Of Object)
The custom method that uses the user-entered text to filter the items specified by the ItemsSource property. The default is null.

The search mode is automatically set to Custom if you set the ItemFilter property.

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

The following example shows how to set the FilterMode to Custom, and then set the ItemFilter property to a custom filter method for 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.


Private employees As New List(Of Employee)()
Public Sub New()
    InitializeComponent()
    ' 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 ItemFilter property to the search method. 
	 myACB.ItemFilter = AddressOf SearchEmployees


...


End Sub


...


Private Function SearchEmployees(ByVal search As String, ByVal value As Object) As Boolean
    ' Cast the value to an Employee. 
    Dim emp As Employee = TryCast(value, Employee)
    If emp IsNot Nothing Then
        ' Look for a match in the first and last names. 
        If emp.LastName.ToLower().StartsWith(search) Then
            Return True

        ElseIf emp.FirstName.ToLower().StartsWith(search) Then
            Return True
        End If
    End If
    ' If no match, return false. 
    Return False
End Function


...


Public Class Employee
    Private _LastName As String
    Public Property LastName() As String
        Get
            Return _LastName
        End Get
        Set(ByVal value As String)
            _LastName = value
        End Set
    End Property
    Private _FirstName As String
    Public Property FirstName() As String
        Get
            Return _FirstName
        End Get
        Set(ByVal value As String)
            _FirstName = value
        End Set
    End Property
    Private _EmailName As String
    Public Property EmailName() As String
        Get
            Return _EmailName
        End Get
        Set(ByVal value As String)
            _EmailName = value
        End Set
    End Property
    Private _ID As Integer
    Public Property ID() As Integer
        Get
            Return _ID
        End Get
        Set(ByVal value As Integer)
            _ID = value
        End Set
    End Property
    Public Sub New(ByVal empLastName As String, ByVal empFirstName As String, ByVal empEmail As String, ByVal empID As Integer)
        LastName = empLastName
        FirstName = empFirstName
        EmailName = empEmail
        ID = empID
    End Sub
    Public Overloads Overrides Function ToString() As String
        Return ((("Employee: " & FirstName & " ") + LastName + System.Environment.NewLine & "Email: ") + EmailName + System.Environment.NewLine & "ID: ") + ID.ToString()
    End Function
End Class



<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."/>
     </StackPanel>
     </StackPanel>


Silverlight

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

ADD
Show: