Beispiel #1
0
        private void GenerateCustomLayout(IModelDetailView modelDetailView)
        {
            ITypeInfo        iTypeInfo            = modelDetailView.ModelClass.TypeInfo;
            HashSet <string> actionContainerNames = new HashSet <string>();

            foreach (IModelViewItem item in modelDetailView.Items)
            {
                IModelPropertyEditor editorInfo = (IModelPropertyEditor)item;
                if (CustomLayoutHelper.FindModelDefaultAttribute(editorInfo.ModelMember.MemberInfo, VisiblePropertiesAttribute) != null)
                {
                    editorInfo.PropertyEditorType = typeof(DetailPropertyEditor);
                }
                string visiblePropertiesAttributeValue = ((IModelMemberExtender)item).VisibleProperties;
                if (editorInfo.PropertyEditorType == typeof(DetailPropertyEditor) && !string.IsNullOrEmpty(visiblePropertiesAttributeValue))
                {
                    string nestedViewId = iTypeInfo.Name + "_" + editorInfo.PropertyName + "_DetailView";
                    editorInfo.View = modelDetailView.Application.Views[nestedViewId];
                }
                ModelDefaultAttribute actionsContainerAttribute = CustomLayoutHelper.FindModelDefaultAttribute(editorInfo.ModelMember.MemberInfo, ActionsContainerAttribute);
                if (actionsContainerAttribute != null)
                {
                    actionContainerNames.Add(actionsContainerAttribute.PropertyValue);
                }
            }
            foreach (string name in actionContainerNames)
            {
                IModelActionContainerViewItem modelActionContainerViewItem = modelDetailView.Items.AddNode <IModelActionContainerViewItem>(name);
            }
        }
Beispiel #2
0
 private void GenerateModelClasses(ModelNode boModel, ITypeInfo typeTnfo)
 {
     foreach (IMemberInfo memberInfo in typeTnfo.OwnMembers)
     {
         ModelDefaultAttribute attribute = CustomLayoutHelper.FindModelDefaultAttribute(memberInfo, CustomDetailViewItemsGenarator.VisiblePropertiesAttribute);
         if ((attribute != null) && (!string.IsNullOrEmpty(attribute.PropertyValue)))
         {
             IModelClass modelClass = ((IModelBOModel)boModel)[memberInfo.MemberType.FullName];
             if (modelClass == null)
             {
                 modelClass = boModel.AddNode <IModelClass>(memberInfo.MemberType.FullName);
                 ITypeInfo typeInfo = XafTypesInfo.Instance.FindTypeInfo(memberInfo.MemberType);
                 modelClass.SetValue <ITypeInfo>("TypeInfo", typeInfo);
             }
             CustomLayoutHelper.Instance.RegisterClassVisibleProperties(modelClass.Name, attribute.PropertyValue);
         }
     }
 }