public BindingChainExampleControl()
        {
            // shoud be assigned before InitializeComponent
            // because initial value is null
            // and BindingChainExampleControl desn't implement INotifyPropertyChanged
            // so noone will know that value of DataSource has been changed
            DataSource = new FirstLevelObject();
            DataSource.PropertyChanged += (sender, args) => OnInternalObjectChanged();

            InitializeComponent();

            OnInternalObjectChanged();
        }
        public BindingChainExampleControl()
        {
            // shoud be assigned before InitializeComponent
            // because initial value is null
            // and BindingChainExampleControl desn't implement INotifyPropertyChanged
            // so noone will know that value of DataSource has been changed
            DataSource = new FirstLevelObject();
            DataSource.PropertyChanged += (sender, args) => OnInternalObjectChanged();

            InitializeComponent();

            OnInternalObjectChanged();
        }