コード例 #1
0
ファイル: TypeDataBinder.cs プロジェクト: EddyAlleman/xcad
        public void Bind <TDataModel>(CreateBindingPageDelegate pageCreator,
                                      CreateBindingControlDelegate ctrlCreator, CreateDynamicControlsDelegate dynCtrlDescCreator,
                                      IContextProvider contextProvider,
                                      out IEnumerable <IBinding> bindings, out IRawDependencyGroup dependencies, out IMetadata[] metadata)
        {
            var type = typeof(TDataModel);

            var bindingsList = new List <IBinding>();

            bindings = bindingsList;

            var pageAttSet = GetAttributeSet(type, -1);

            OnGetPageAttributeSet(type, ref pageAttSet);

            var page = pageCreator.Invoke(pageAttSet);

            var firstCtrlId = 0;

            dependencies = new RawDependencyGroup();

            var metadataMap = new Dictionary <object, PropertyInfoMetadata>();

            CollectMetadata(type, metadataMap, new PropertyInfo[0], new List <Type>(), contextProvider);

            TraverseType <TDataModel>(type, new List <IControlDescriptor>(),
                                      ctrlCreator, dynCtrlDescCreator, page, metadataMap, bindingsList, dependencies, contextProvider, ref firstCtrlId);

            metadata = metadataMap.Values.ToArray();

            OnBeforeControlsDataLoad(bindings);
        }
コード例 #2
0
        public void Bind <TDataModel>(TDataModel model, CreateBindingPageDelegate pageCreator,
                                      CreateBindingControlDelegate ctrlCreator,
                                      out IEnumerable <IBinding> bindings, out IRawDependencyGroup dependencies)
        {
            var type = model.GetType();

            var bindingsList = new List <IBinding>();

            bindings = bindingsList;

            var pageAttSet = GetAttributeSet(type, -1);

            OnGetPageAttributeSet(type, ref pageAttSet);

            var page = pageCreator.Invoke(pageAttSet);

            var firstCtrlId = 0;

            dependencies = new RawDependencyGroup();

            TraverseType(model.GetType(), model, new List <PropertyInfo>(),
                         ctrlCreator, page, bindingsList, dependencies, ref firstCtrlId);

            OnBeforeControlsDataLoad(bindings);

            LoadControlsData(bindings);
        }