KDE также зависит от Boost.
Однако это в основном зависит от ваших целей, и даже в большей степени от вашей целевой аудитории, а не от объема вашего проекта. например TinyJSON (очень маленький проект), почти на 100% Boost, но это прекрасно, потому что предоставляемый им API похож на Boost и нацелен на программистов Boost, которым нужны привязки JSON. Однако многие другие библиотеки JSON не используют Boost, потому что они нацелены на другую аудиторию.
С другой стороны, я не могу использовать Boost на работе, и я знаю, что многие другие разработчики (на своих рабочих местах) находятся в одной лодке. Так что, я думаю, вы могли бы сказать, если ваша цель - OpenSource, и группа, которая использует Boost, продолжайте. Если вы нацелены на предприятие, вы можете подумать об этом и скопировать и вставить только необходимые детали из Boost (и посвятить себя их поддержке), чтобы ваш проект работал.
Хорошо, вот решение:
Нам нужно обработать событие BindingComplete объекта BinsingSource, CurrencyManager или BindingBanagerBase класс. Код может выглядеть так:
/* Note the 4th parameter, if it is not set, the event will not be fired.
It seems like an unexpected behavior, as this parameter is called
formattingEnabled and based on its name it shouldn't affect BindingComplete
event, but it does. */
txtAge.DataBindings.Add("Text", dataSource, "Name", true)
.BindingManagerBase.BindingComplete += BindingManagerBase_BindingComplete;
...
void BindingManagerBase_BindingComplete(
object sender, BindingCompleteEventArgs e)
{
if (e.Exception != null)
{
// this will show message to user, so it won't be silent anymore
MessageBox.Show(e.Exception.Message);
// this will return value in the bound control to a previous correct value
e.Binding.ReadValue();
}
}