IBindingList Interface

Provides the features required to support both complex and simple scenarios when binding to a data source.

Namespace:  System.ComponentModel
Assembly:  System (in System.dll)

'Declaration
Public Interface IBindingList _
	Inherits IList, ICollection, IEnumerable

The IBindingList type exposes the following members.

  NameDescription
Public propertySupported by the XNA FrameworkAllowEditGets whether you can update items in the list.
Public propertySupported by the XNA FrameworkAllowNewGets whether you can add items to the list using AddNew.
Public propertySupported by the XNA FrameworkAllowRemoveGets whether you can remove items from the list, using Remove or RemoveAt.
Public propertySupported by the XNA FrameworkCountGets the number of elements contained in the ICollection. (Inherited from ICollection.)
Public propertySupported by the XNA FrameworkIsFixedSizeGets a value indicating whether the IList has a fixed size. (Inherited from IList.)
Public propertySupported by the XNA FrameworkIsReadOnlyGets a value indicating whether the IList is read-only. (Inherited from IList.)
Public propertySupported by the XNA FrameworkIsSortedGets whether the items in the list are sorted.
Public propertySupported by the XNA FrameworkIsSynchronizedGets a value indicating whether access to the ICollection is synchronized (thread safe). (Inherited from ICollection.)
Public propertySupported by the XNA FrameworkItemGets or sets the element at the specified index. (Inherited from IList.)
Public propertySupported by the XNA FrameworkSortDirectionGets the direction of the sort.
Public propertySupported by the XNA FrameworkSortPropertyGets the PropertyDescriptor that is being used for sorting.
Public propertySupported by the XNA FrameworkSupportsChangeNotificationGets whether a ListChanged event is raised when the list changes or an item in the list changes.
Public propertySupported by the XNA FrameworkSupportsSearchingGets whether the list supports searching using the Find method.
Public propertySupported by the XNA FrameworkSupportsSortingGets whether the list supports sorting.
Public propertySupported by the XNA FrameworkSyncRootGets an object that can be used to synchronize access to the ICollection. (Inherited from ICollection.)
Top

  NameDescription
Public methodSupported by the XNA FrameworkAddAdds an item to the IList. (Inherited from IList.)
Public methodSupported by the XNA FrameworkAddIndexAdds the PropertyDescriptor to the indexes used for searching.
Public methodSupported by the XNA FrameworkAddNewAdds a new item to the list.
Public methodSupported by the XNA FrameworkApplySortSorts the list based on a PropertyDescriptor and a ListSortDirection.
Public methodSupported by the XNA FrameworkClearRemoves all items from the IList. (Inherited from IList.)
Public methodSupported by the XNA FrameworkContainsDetermines whether the IList contains a specific value. (Inherited from IList.)
Public methodSupported by the XNA FrameworkCopyToCopies the elements of the ICollection to an Array, starting at a particular Array index. (Inherited from ICollection.)
Public methodSupported by the XNA FrameworkFindReturns the index of the row that has the given PropertyDescriptor.
Public methodSupported by the XNA FrameworkGetEnumeratorReturns an enumerator that iterates through a collection. (Inherited from IEnumerable.)
Public methodSupported by the XNA FrameworkIndexOfDetermines the index of a specific item in the IList. (Inherited from IList.)
Public methodSupported by the XNA FrameworkInsertInserts an item to the IList at the specified index. (Inherited from IList.)
Public methodSupported by the XNA FrameworkRemoveRemoves the first occurrence of a specific object from the IList. (Inherited from IList.)
Public methodSupported by the XNA FrameworkRemoveAtRemoves the IList item at the specified index. (Inherited from IList.)
Public methodSupported by the XNA FrameworkRemoveIndexRemoves the PropertyDescriptor from the indexes used for searching.
Public methodSupported by the XNA FrameworkRemoveSortRemoves any sort applied using ApplySort.
Top

  NameDescription
Public eventSupported by the XNA FrameworkListChangedOccurs when the list changes or an item in the list changes.
Top

  NameDescription
Public Extension MethodAsParallelEnables parallelization of a query. (Defined by ParallelEnumerable.)
Public Extension MethodAsQueryableConverts an IEnumerable to an IQueryable. (Defined by Queryable.)
Public Extension MethodSupported by the XNA FrameworkCast(Of TResult)Casts the elements of an IEnumerable to the specified type. (Defined by Enumerable.)
Public Extension MethodSupported by the XNA FrameworkOfType(Of TResult)Filters the elements of an IEnumerable based on a specified type. (Defined by Enumerable.)
Top

This interface is implemented by the DataView class. Implementation of a method should exhibit the same behavior as the implementation of that method in the DataView class.

When you call the ApplySort or RemoveSort methods, you should raise a ListChanged event with the Reset enumeration.

When you call the AddNew method, you should raise a ListChanged event with the ItemAdded enumeration carrying the appropriate index. The added row is in a state where pressing the ESC on a DataGridView control can remove the new row. Raising the ListChanged event with the ItemAdded enumeration a second time on this row indicates that the item is now a row not in the "new" state.

When you remove an item or call the CancelEdit method on a new row (if that row implements IEditableObject), you should raise a ListChanged event with the ItemDeleted enumeration carrying the appropriate index.

The following example provides a simple implementation of the IBindingList interface. The CustomerList class stores customer information in a list. This example assumes that you have used the Customer class that can be found in the example in the IEditableObject class.

Public Class CustomersList
        Inherits CollectionBase
        Implements IBindingList 

        Private resetEvent As New ListChangedEventArgs(ListChangedType.Reset, -1)
        Private onListChanged1 As ListChangedEventHandler


        Public Sub LoadCustomers()
            Dim l As IList = CType(Me, IList)
            l.Add(ReadCustomer1())
            l.Add(ReadCustomer2())
            OnListChanged(resetEvent)
        End Sub  


        Default Public Property Item(ByVal index As Integer) As Customer
            Get 
                Return CType(List(index), Customer)
            End Get 
            Set(ByVal Value As Customer)
                List(index) = Value
            End Set 
        End Property 


        Public Function Add(ByVal value As Customer) As Integer 
            Return List.Add(value)
        End Function  


        Public Function AddNew2() As Customer
            Return CType(CType(Me, IBindingList).AddNew(), Customer)
        End Function  


        Public Sub Remove(ByVal value As Customer)
            List.Remove(value)
        End Sub  



        Protected Overridable Sub OnListChanged(ByVal ev As ListChangedEventArgs)
            If (onListChanged1 IsNot Nothing) Then
                onListChanged1(Me, ev)
            End If 
        End Sub  



        Protected Overrides Sub OnClear()
            Dim c As Customer
            For Each c In List
                c.parent = Nothing 
            Next c
        End Sub  


        Protected Overrides Sub OnClearComplete()
            OnListChanged(resetEvent)
        End Sub  


        Protected Overrides Sub OnInsertComplete(ByVal index As Integer, ByVal value As Object)
            Dim c As Customer = CType(value, Customer)
            c.parent = Me
            OnListChanged(New ListChangedEventArgs(ListChangedType.ItemAdded, index))
        End Sub  


        Protected Overrides Sub OnRemoveComplete(ByVal index As Integer, ByVal value As Object)
            Dim c As Customer = CType(value, Customer)
            c.parent = Me
            OnListChanged(New ListChangedEventArgs(ListChangedType.ItemDeleted, index))
        End Sub  


        Protected Overrides Sub OnSetComplete(ByVal index As Integer, ByVal oldValue As Object, ByVal newValue As Object)
            If oldValue <> newValue Then 

                Dim oldcust As Customer = CType(oldValue, Customer)
                Dim newcust As Customer = CType(newValue, Customer)

                oldcust.parent = Nothing
                newcust.parent = Me

                OnListChanged(New ListChangedEventArgs(ListChangedType.ItemAdded, index))
            End If 
        End Sub  


        ' Called by Customer when it changes. 
        Friend Sub CustomerChanged(ByVal cust As Customer)
            Dim index As Integer = List.IndexOf(cust)
            OnListChanged(New ListChangedEventArgs(ListChangedType.ItemChanged, index))
        End Sub  


        ' Implements IBindingList. 

        ReadOnly Property AllowEdit() As Boolean Implements IBindingList.AllowEdit
            Get 
                Return True 
            End Get 
        End Property 

        ReadOnly Property AllowNew() As Boolean Implements IBindingList.AllowNew
            Get 
                Return True 
            End Get 
        End Property 

        ReadOnly Property AllowRemove() As Boolean Implements IBindingList.AllowRemove
            Get 
                Return True 
            End Get 
        End Property 

        ReadOnly Property SupportsChangeNotification() As Boolean Implements IBindingList.SupportsChangeNotification
            Get 
                Return True 
            End Get 
        End Property 

        ReadOnly Property SupportsSearching() As Boolean Implements IBindingList.SupportsSearching
            Get 
                Return False 
            End Get 
        End Property 

        ReadOnly Property SupportsSorting() As Boolean Implements IBindingList.SupportsSorting
            Get 
                Return False 
            End Get 
        End Property 

        ' Events. 
        Public Event ListChanged As ListChangedEventHandler Implements IBindingList.ListChanged


        ' Methods. 
        Function AddNew() As Object Implements IBindingList.AddNew
            Dim c As New Customer(Me.Count.ToString())
            List.Add(c)
            Return c
        End Function  


        ' Unsupported properties. 

        ReadOnly Property IsSorted() As Boolean Implements IBindingList.IsSorted
            Get 
                Throw New NotSupportedException()
            End Get 
        End Property 

        ReadOnly Property SortDirection() As ListSortDirection Implements IBindingList.SortDirection
            Get 
                Throw New NotSupportedException()
            End Get 
        End Property 


        ReadOnly Property SortProperty() As PropertyDescriptor Implements IBindingList.SortProperty
            Get 
                Throw New NotSupportedException()
            End Get 
        End Property 


        ' Unsupported Methods. 
        Sub AddIndex(ByVal prop As PropertyDescriptor) Implements IBindingList.AddIndex
            Throw New NotSupportedException()
        End Sub  


        Sub ApplySort(ByVal prop As PropertyDescriptor, ByVal direction As ListSortDirection) Implements IBindingList.ApplySort
            Throw New NotSupportedException()
        End Sub  


        Function Find(ByVal prop As PropertyDescriptor, ByVal key As Object) As Integer Implements IBindingList.Find
            Throw New NotSupportedException()
        End Function  


        Sub RemoveIndex(ByVal prop As PropertyDescriptor) Implements IBindingList.RemoveIndex
            Throw New NotSupportedException()
        End Sub  


        Sub RemoveSort() Implements IBindingList.RemoveSort
            Throw New NotSupportedException()
        End Sub  


        ' Worker functions to populate the list with data. 
        Private Shared Function ReadCustomer1() As Customer
            Dim cust As New Customer("536-45-1245")
            cust.FirstName = "Jo"
            cust.LastName = "Brown" 
            Return cust
        End Function  


        Private Shared Function ReadCustomer2() As Customer
            Dim cust As New Customer("246-12-5645")
            cust.FirstName = "Robert"
            cust.LastName = "Brown" 
            Return cust
        End Function  
    End Class

.NET Framework

Supported in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Was this page helpful?
(1500 characters remaining)
Thank you for your feedback
Show:
© 2014 Microsoft