Объект привязки данных WinForms (C #) к свойству Checkbox.Checked - PullRequest
4 голосов
/ 16 мая 2010

Я пишу приложение для WinForms и пытаюсь связать логическое свойство объекта .NET со свойством checkbox «check». Я успешно создаю привязку, но когда я изменяю значение свойства источника с false на true (у меня есть кнопка, которая переключает его), свойство checked флажка не отражает это изменение.

if (chkPreRun.DataBindings["Checked"] == null)
{
    Debug.WriteLine("Adding chkPreRun databinding");
    Binding _binding = chkPreRun.DataBindings.Add("Checked", NwmConfig, "PreRun")

    // Added this just to ensure that these were being set properly
    _binding.DataSourceUpdateMode = DataSourceUpdateMode.OnPropertyChanged;
    _binding.ControlUpdateMode = ControlUpdateMode.OnPropertyChanged;
}

Я могу, например, успешно привязать свойство text к значению TextBox. Однако я не уверен, что мне не хватает при привязке к свойству «Проверено».

1 Ответ

7 голосов
/ 16 мая 2010

Чтобы это работало, источник должен иметь либо событие PreRunChanged (EventHandler), которое запускается, либо он должен реализовывать INotifyPropertyChanged (включая это свойство). Или, как крайний случай, должен иметь custom PropertyDescriptor реализацию, которая поддерживает уведомление (но это очень редко.

Ваш код имеет PreRunChanged? Поднимается ли в нужное время?

(пользовательский интерфейс не запрашивает изменения; он знает только об изменениях через события уведомлений)

...