Winform: привязка пользовательского свойства элемента управления к BindingList - PullRequest
2 голосов
/ 20 мая 2011

Я пытаюсь создать привязку из своего пользовательского элемента управления к объектам, которые находятся в BindingList.

Хотя в текстовом поле я могу легко написать

textBox.DataBindings.Add("Text",myBindingList,"PropertyOfObjectOfBindingList")

С помощью моего пользовательского свойства«Значение», эта вещь не работает (объект не обновляется).

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

Я просто хочу, чтобы эта строка работала:

customControl.DataBindings.Add("CustomProperty",myBindingList,"PropertyOfObjectOfBindingList")

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

Я читал это по сети: http://kbalertz.com/327413/control-using-Visual.aspx однако в данный момент у меня не работает, может я что-то не так делаю

Ответы [ 3 ]

1 голос
/ 20 мая 2011

Так как вы сказали, что ваш связанный объект не обновляется (я полагаю из Control -> Object change), но он связан правильно, возможно, это поможет:

customControl.DataBindings.Add("CustomProperty", list, "BoundObjectProperty", 
    false, DataSourceUpdateMode.OnPropertyChanged);
0 голосов
/ 20 мая 2011

Я решил проблему самостоятельно:

Хотя статья, на которую я ссылался, является хорошим предложением, здесь есть неправильная часть; вам не нужно создавать событие в вашем пользовательском классе с помощью PropertyChangedEventHandler, а просто с помощью EventHandler.

public event EventHandler CustomPropertyChanged;

Достаточно, чтобы все работало. Очевидно, вам нужно позвонить, когда ваша собственность изменится

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

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

В настоящее время я не могу решить эту проблему.

0 голосов
/ 20 мая 2011
...