ObservableCollection <T> в Winforms и возможных альтернативах

Winforms .net 3.5 приложение. В моем приложении у меня есть общий класс, который выглядит так:

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; }
}

и я использую его во всех своих диалоговых окнах, когда хочу реализовать какую-то функциональность фильтра. Поэтому я называю диалоговую форму с предварительно наложеннымList прошло в конструкторе. Теперь, когда диалог загружается, он перебирает каждый элемент списка и добавляет:

ФлажокКомбинированный ящикТекстовое поле

к каждой строке в TableLayoutPanel. Флажок получает свое текстовое свойство отFilterProperty и его статус Проверено отFilterPropertyChecked... Combobox получает свою привязку отFilterOperator... и Textbox получает свое текстовое значение из.FilterValue

Обратите внимание, как я только говорюполучает, То, что я хотел бы сделать, это автоматически обновить эти свойства, когда элементы управления, свойства которых они должны изменить. Я слышал оObservableCollection но у меня, похоже, нетдоступ' к нему в Winforms после добавленияSystem.Collections.ObjectModel Пространство имен.

Что было бы лучшим способом для достижения этой цели. BindingList с INotifyPropertyChanged ?? Я не эксперт в последнем, и был бы очень признателен за некоторые указания - если это - путь, которым я должен идти.

Спасибо!

РЕДАКТИРОВАТЬ:

Хорошо, позвольте мне опубликовать некоторый код, чтобы показать, что я должен делать :). Я знаю, что мне нужно реализоватьINotifyPropertyChanged в моем классе FilterItem, так (например, только для части FilterValue):

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
}

Теперь этодолжен все собрались вместе в моем Form_Load (это только для части Textbox, и я опустил Checbox и ComboBox) следующим образом:

private List FilterList; // 

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

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