ObservableCollection <T> en Winforms y posibles alternativas

Winforms .net 3.5 de la aplicación. En mi aplicación tengo una clase genérica que se ve así:

public class FilterItem {
  public FilterItem() { }
  public string FilterProperty { get; set; }
  public bool FilterPropertyChecked { get; set; }
  public ComparitiveOperator FilterOperator { get; set; }
  public string FilterValue { get; set; }
}

y lo uso en todos mis cuadros de diálogo cuando quiero implementar algún tipo de funcionalidad de filtro. Así que llamo al formulario de diálogo con un pre-poulatedList<FilterItem> Pasado en el constructor. Ahora, cuando se carga el cuadro de diálogo, se itera a través de cada elemento de lista y se agrega:

Una casilla de verificaciónUn comboboxUn cuadro de texto

a cada fila en un TableLayoutPanel. La casilla de verificación obtiene su propiedad de texto deFilterProperty y su estado Comprobado deFilterPropertyChecked... el Combobox obtiene su enlace deFilterOperator... y el cuadro de texto obtiene su valor de texto deFilterValue.

Fíjate que solo estoy diciendoconsigue. Lo que me gustaría hacer es actualizar automáticamente estas propiedades cuando los Controles cuyas propiedades están obligadas a cambiar. Me enteré deObservableCollection<T> pero no parece tener 'acceso' a él en Winforms después de agregar elSystem.Collections.ObjectModel espacio de nombres.

¿Cuál sería la mejor manera de lograr esto? BindingList con INotifyPropertyChanged ?? No soy un experto en esto último, y agradecería enormemente algunos consejos, si así es como debería ir.

¡Gracias!

EDITAR:

Ok, déjame publicar un código para mostrar lo que creo que debería estar haciendo :). Sé que necesito implementarINotifyPropertyChanged en mi clase FilterItem, entonces (solo para la parte FilterValue por ejemplo):

public class FilterItem : INotifyPropertyChanged {
    public FilterItem() { }
    public string FilterProperty { get; set; }
    public bool FilterPropertyChecked { get; set; }
    public ComparitiveOperator FilterOperator { get; set; }

    private string _FilterValue;
    public string FilterValue {
        get { return this._FilterValue; }
        set {
            if (this._FilterValue != value) {
                this._FilterValue = value;
                this.OnFilterValueChanged();
            }
        }
    }

    #region INotifyPropertyChanged Members
    protected void OnFilterValueChanged() {
        var handler = this.PropertyChanged;
        if (handler != null) {
            handler(this, new PropertyChangedEventArgs("FilterValue"));
        }
    }
    public event PropertyChangedEventHandler PropertyChanged;
    #endregion
}

Ahoradebería todos se juntan en mi Form_Load (esto es solo para la parte de Textbox y he omitido el Checbox y ComboBox) así:

private List<FilterItem> FilterList; // <-- this gets assigned to in the constructor

private void dlgFilterData_Load(object sender, EventArgs e) {
    foreach (FilterItem item in FilterList) {
        txt = new TextBox();
        txt.DataBindings.Add("Text", item, "FilterValue", false, DataSourceUpdateMode.OnPropertyChanged);
        txt.Dock = DockStyle.Fill;
    }
}

DataSource de los enlaces de datos del cuadro de texto es el 'elemento' FilterItem. Pero ahora parece que tengo un problema con mi IDE de estudio visual, así que no puedo probar esto, pero lo haré cuando lo tenga en funcionamiento. Lo que me gustaría saber ahora es: ¿ayudará esta configuración con éxito a permitir que mi individuoFilterItems para actualizarse automáticamente cuando cambien las propiedades respectivas de su Control asignado?

Respuestas a la pregunta(1)

Su respuesta a la pregunta