Использование не коллекционного объекта в качестве источника данных

Куча компонентов каркаса dotnet использует компонент DataSource. У меня есть объект, который имеет ряд настроек, которые могут изменить источник данных, который он представляет. Я хотел бы установить этот объект в качестве раскрывающегося DataSource набора ComboBoxes и DataGridViewComboBoxCells.

Моя проблема возникает, когда я пытаюсь подключить устройство к ComboBox. Я предполагаю, что, поскольку изменения в DataSource могут произойти после того, как DataSource был установлен, я должен использовать одну из этих вещей BindingSource, но литература по MSDN не дает понять, что такое связывание Source, не рассказывая, что он делает или как это работает.

Как вы, ребята, могли бы посоветовать подключить этот Объект как DataSource / BindingSource?

РЕДАКТИРОВАТЬ:
Очевидно, этот класс нежелателен, но он иллюстрирует тот тип объекта, который у меня есть сейчас.
Большая часть времени находится в воздухе в данный момент, но в основном это показывает, что мой класс не сам сборник, а содержит его. Мне нужно иметь возможность указать свойству DataSource ComboBox, что здесь есть изменчивый список и что он должен использовать этот список в качестве источника данных для своего раскрывающегося списка.

<code>Public Class DynamicDataSource
    Private basicList As New List(Of String)(New String() {"one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten"})
    Private _showEvensOnly As Boolean
    Private _showNotContainingO As Boolean
    Public Property ShowEvensOnly() As Boolean
        Get
            Return _showEvensOnly
        End Get
        Set(ByVal value As Boolean)
            _showEvensOnly = value
        End Set
    End Property
    Public Property ShowNotContainingO() As Boolean
        Get
            Return _showNotContainingO
        End Get
        Set(ByVal value As Boolean)
            _showNotContainingO = value
        End Set
    End Property
    Public Function GetDynamicList() As List(Of String)
        Dim processMe As New List(Of String)(basicList)
        If Me._showEvensOnly Then
            For JJ As Integer = processMe.Count - 1 To 0 Step -1
                If JJ Mod 2 = 0 Then
                    processMe.Remove(processMe(JJ))
                End If
            Next
        End If

        If Me._showNotContainingO Then
            For JJ As Integer = processMe.Count - 1 To 0 Step -1
                If processMe(JJ).ToUpper.Contains("O"c) Then
                    processMe.Remove(processMe(JJ))
                End If
            Next
        End If

        Return processMe
    End Function
End Class
</code>

Ответы на вопрос(1)

Ваш ответ на вопрос