Комментарии 11
А что сложного в INPC и contorl.DataBinding.Add()?
Ну, кроме того, что в WinForms нужно в Add передавать строкой названия свойств.
Ну, кроме того, что в WinForms нужно в Add передавать строкой названия свойств.
0
накидал на коленке пример.
https://github.com/Zagrebelin/WinformsDatabinding
https://github.com/Zagrebelin/WinformsDatabinding
0
Да наверно ничего сложного нет. Вопрос только в том, что обычно биндинги обеспечивают от контрола к источнику связь. Я знаю, что есть двухсторонний режим, но мне реально быстрее было один раз написать свое, чем лезть на msdn.com и вычитывать там как настроить двухстороннюю связь при многопоточности. У них серьезные проблемы с документацией по этому вопросу.
0
А у вас Binding_SetValueToControl нормально работает в многопоточной среде? TargetControl....SetValue() не падает, если свойство модели было установлено не в UI потоке?
0
НЛО прилетело и опубликовало эту надпись здесь
1) if (this.PropertyIsChanged != null) { this.PropertyIsChanged.Invoke(); — это кусок кода обязательно необходим, поскольку в противном случае, можно нарваться на nullReference-исключение.
И в этом случае тоже может быть null ref, потому что после проверки последний подписчик может отписаться от события.
Поэтому правильней делать так:
EventHandler handler = this.PropertyIsChanged;
if (handler != null)
{
handler(this, EventArgs.Empty);
}
0
Это как? Если задействован set-аксессор поля Property, то пока не выработается его логика, никто ни от чего отписаться не может. Не уверен насчет кросс-поточности, но в любом случае этот код падает при попытке изменить контрол с НЕ-UI потока. Я уже писал выше.
0
Разговор конечно о многопоточности.
Тут немного по теме: http://codeblog.jonskeet.uk/2015/01/30/clean-event-handlers-invocation-with-c-6/
Тут немного по теме: http://codeblog.jonskeet.uk/2015/01/30/clean-event-handlers-invocation-with-c-6/
0
при многопоточности этот код и так бабахнется.
падает конечно. я специально опустил этот момент, чтобы не грузить новичков нипанятным. а вообще, там стандартная схема if(...InvokeRequired). ну и через делегат, который вызывает тот же самый метод. все летает прекрасно. вообще голова теперь не болит за обновление контролов
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Пилим простенький Binder…