public XtraBinding(object DataSource, XtraBindingOperation XtraBindingOperation)
        {
            if (ItemAdapter == null)
                ItemAdapter = new ItemAdapter.DataTable.XBIADataTable();

            _dataSource = DataSource;

            _bindingSource = new BindingSource(ItemAdapter.GetBindingListView(DataSource), XtraBindingOperation.ObjectCalculator);

            System.Type itemType = ItemAdapter != null ? ItemAdapter.AdaptedItemType : GetDataSourceCustomItemType(DataSource);

            _isCanEdit = itemType.GetInterfaces().Contains(typeof(System.ComponentModel.IEditableObject));

            _isCanModify = itemType.GetInterfaces().Contains(typeof(IModifyableObjectProvider));

            _isEditStatusProvided = itemType.GetInterfaces().Contains(typeof(IObjectStateProvider));

            if (_isCanModify)
            {
                System.Reflection.MemberInfo memberInfo = itemType.GetMembers().First(p => p.Name == "ModifyableObject");

                _isModifyedStatusProvided = memberInfo.DeclaringType.GetInterfaces().Contains(typeof(IObjectStateProvider));

                _bindingSource.RemovingOld += new System.ComponentModel.AddingNewEventHandler(_bindingSource_RemovingOld);
            }

            xtraBindingOperation = XtraBindingOperation;

            if (xtraBindingOperation != null)
            {
                xtraBindingOperation.EndFill += new XtraBindingOperationEndFillHandler(xtraBindingOperation_EndFill);
            }

            EndEdit();
        }
        private static XtraBinding CreateXtraBindingSource(XOTableContext TableContext, IControllerProvider ControllerProvider, XtraBindingChildProperties ChildProperties)
        {
            object dataSource = ControllerProvider.GetDataSource(TableContext.XOTable);

            DataAvail.Data.DataAdapter.IDataAdapter dataAdapter = ControllerProvider.GetDataAdapter(TableContext.XOTable);

            DataAvail.XtraBindings.XtraBindingOperation oper = new DataAvail.XtraBindings.XtraBindingOperation(dataSource, dataAdapter, ControllerProvider.GetObjectCalculator(TableContext.XOTable));

            XtraBinding xtraBinding = null;

            if (TableContext.ShownChildrenRelations.Count() > 0)
            {
                xtraBinding = new DataAvail.XtraBindings.XtraBindingContainer(dataSource, oper);

                foreach (XORelation rel in TableContext.ShownChildrenRelations)
                {
                    DataAvail.XtraBindings.XtraBinding childBinding = CreateXtraBindingSource(rel.ChildTable.CreateTableChildContext(TableContext.Fields.First(p=>p.Name == rel.ParentField.Name)), ControllerProvider, new XtraBindingChildProperties(
                        xtraBinding, rel.ParentTable.Name, rel.ParentField.Name, rel.ChildTable.Name, rel.ChildField.Name));

                    ((XtraBindingContainer)xtraBinding).Children.Add((XtraBindingChild)childBinding);
                }
            }
            else if (ChildProperties != null)
            {
                xtraBinding = new DataAvail.XtraBindings.XtraBindingChild(dataSource, oper, ChildProperties);
            }
            else
            {
                xtraBinding = new XtraBinding(dataSource, oper);
            }

            return xtraBinding;
        }
 public XtraBindingContainer(object DataSource, XtraBindingOperation XtraBindingOperation)
     : base(DataSource, XtraBindingOperation)
 {
 }
 public XtraBindingChild(object DataSource, XtraBindingOperation XtraBindingOperation, XtraBindingChildProperties XtraBindingChildProperties)
     : base(DataSource, XtraBindingOperation)
 {
     _xtraBindingChildProperties = XtraBindingChildProperties;
 }