WinForms: ответ на применяемый BindingSource

Есть ли событие, на которое я могу получить уведомление, когда источник данных будет применен к связанным элементам управления?

Или есть другое событие, в котором я гарантирую, что источник данных был применен?

Я работаю с WinForms (из WPF) и использую теги со значениями, связанными с данными, чтобы определить тип элемента управления, с которым я работаю. Многие элементы управления могут иметь одинаковое значение тега, и я должен получить элементы управления с нужным тегом для выполнения бизнес-логики.

Проблема в том, что я не знаю, когда выполнять поиск значений тегов. Я попытался найти значения тега сразу после вызова:

myBindingSource.DataSource = OutputFunctions.Instance;
//Yes... I'm binding to a singleton with a list of properties.
//Its not the best method, but works.

внутри моегоForm.Load обработчик события. Но во время поиска я увидел, что значения тегов не установлены. Как это может быть, если я только что установил источник данных?

Как видно из внутреннего кода для моей формы, я правильно установил значение в окне свойств дизайнера:

this.textBoxDTemp.DataBindings.Add(new System.Windows.Forms.Binding(
    "Tag",
    this.myBindingSource,
    "KNOB_DRIVER_TEMP",
    true));

Я посмотрел наBindingComplete, который, честно говоря, выглядит очень многообещающим, за исключением того, что он не срабатывает во время инициализации привязки, даже если значение предположительно распространяется от источника данных к целевому элементу управления.

РЕДАКТИРОВАТЬ: Согласно запросу, источник данных сначала устанавливается во внутреннем коде для формы как таковой:

this.myBindingSource.DataSource = typeof(OutputFunctions);

А вот и синглтон на случай, если это поможет.

public class OutputFunctions
{
    private static OutputFunctions instance;

    public static OutputFunctions Instance
    {
        get
        {
            if (instance == null)
            {
                instance = new OutputFunctions();
            }
            return instance;
        }
    }

    private OutputFunctions() { }

    public string KNOB_DRIVER_TEMP { get { return "KNOB_DRIVER_TEMP"; } }
    public string KNOB_PASSENGER_TEMP { get { return "KNOB_PASSENGER_TEMP"; } }
    public string KNOB_FAN { get { return "KNOB_FAN"; } }
}

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

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