• 利用XAF中的FeatureCenter例子的,直接打开DetailView


    一、要将FeatureCenter的动态库FeatureCenter.Module.dll引入到你的应用程序中

    二、 在需要直接加载DetailView类前加入:

    [AutoCreatableObject(ViewEditMode = ViewEditMode.View)]

    表明此类是要直接加载DetailView的

    这个比较灵活,比帮助中的简单,方便,如:

    [NonPersistent]
        [DefaultClassOptions][AutoCreatableObject(ViewEditMode = ViewEditMode.View)]
        public class DomainObject1
        {
        public string Title { get; set; }
        public string Context { get; set; }
        private static DomainObject1 instance;
            protected DomainObject1() : base() {}
            public static DomainObject1 Instance
            {
                get
                {
                    if(instance == null) {
                        instance = new DomainObject1();
                    }
                    return instance;
                }
            }
    }
        }

    三、修改你的Module.cs

    public sealed partial class FeatureCenterTestModule : ModuleBase
        {
            public FeatureCenterTestModule()
            {
                DevExpress.ExpressApp.ConditionalEditorState.Core.EditorStateRuleManager.CustomParseProperties += EditorStateRuleManager_CustomParseProperties;
                Disposed += FeatureCenterTestModule_Disposed;
                InitializeComponent();
       DateRangeRepository.RegisterRange(new DateRange("Rolling 1994", new RangePoint(new DateTime(1994, 1, 1), 0, TimeIntervalType.Day), new RangePoint(new DateTime(1994, 1, 1), DateTime.Today.DayOfYear, TimeIntervalType.Day)));
       DateRangeRepository.RegisterRange(new DateRange("Rolling 1995", new RangePoint(new DateTime(1995, 1, 1), 0, TimeIntervalType.Day), new RangePoint(new DateTime(1995, 1, 1), DateTime.Today.DayOfYear, TimeIntervalType.Day)));
       DateRangeRepository.RegisterRange(new DateRange("Rolling 1996", new RangePoint(new DateTime(1996, 1, 1), 0, TimeIntervalType.Day), new RangePoint(new DateTime(1996, 1, 1), DateTime.Today.DayOfYear, TimeIntervalType.Day)));

                Hints.RegisterViewSpecificHints();
            }

            private void Application_CustomizeFormattingCulture(object sender, CustomizeFormattingCultureEventArgs e) {
                e.FormattingCulture.NumberFormat.CurrencySymbol = System.Globalization.CultureInfo.GetCultureInfo("en-US").NumberFormat.CurrencySymbol;
            }
            private void application_CustomProcessShortcut(object sender, CustomProcessShortcutEventArgs e) {
                if (e.Shortcut != null && !string.IsNullOrEmpty(e.Shortcut.ViewId)) {
        IModelView modelView = Application.FindModelView(e.Shortcut.ViewId);
        if(modelView is IModelObjectView) {
         ITypeInfo typeInfo = ((IModelObjectView)modelView).ModelClass.TypeInfo;
         AutoCreatableObjectAttribute attribute = typeInfo.FindAttribute<AutoCreatableObjectAttribute>(true);
         if(attribute != null && attribute.AutoCreatable) {
          IObjectSpace objSpace = Application.CreateObjectSpace();
          object obj;
          if(typeof(XPBaseObject).IsAssignableFrom(typeInfo.Type)) {
           obj = objSpace.FindObject(typeInfo.Type, null);
           if(obj == null) {
            obj = objSpace.CreateObject(typeInfo.Type);
           }
          }
          else {
                                if (typeInfo.Type == typeof(DomainObject1))
                                {
                                    obj = DomainObject1.Instance;
                                } else {
           obj = Activator.CreateInstance(typeInfo.Type);
          }
          }
          //obj = typeof(BaseObject).IsAssignableFrom(typeInfo.Type) ? objSpace.CreateObject(typeInfo.Type) : Activator.CreateInstance(typeInfo.Type);
          DetailView detailView = Application.CreateDetailView(objSpace, obj, true);
          if(attribute.ViewEditMode == ViewEditMode.Edit) {
           detailView.ViewEditMode = DevExpress.ExpressApp.Editors.ViewEditMode.Edit;
          }
          e.View = detailView;
          e.Handled = true;
         }
        }
                }
            }
            private void AuditTrailServiceInstance_QueryCurrentUserName(object sender, QueryCurrentUserNameEventArgs e) {
                //Do not remove this line. Usually, the current user name is supplied by an XAF application's Security System.
                //However, the FeatureCenter demo doesn't use the Security System module.
                //That's why we have to use the WindowsIdentity, to get the current user name.

                e.CurrentUserName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
            }
            private void AuditTrailServiceInstance_CustomizeAuditTrailSettings(object sender, CustomizeAuditTrailSettingsEventArgs e) {
                e.AuditTrailSettings.Clear();
                e.AuditTrailSettings.AddType(typeof(FeatureCenter.Module.Audit.SimplePropertiesAuditedObject), true);
                e.AuditTrailSettings.AddType(typeof(FeatureCenter.Module.Audit.CollectionPropertiesAuditedObject), true);
                e.AuditTrailSettings.AddType(typeof(FeatureCenter.Module.Audit.AuditSettingsObject), new string[] { "Name", "AuditedProperty" });
                e.AuditTrailSettings.AddType(typeof(FeatureCenter.Module.Audit.ObjectAuditingModesObject), true);
            }
            private void FeatureCenterTestModule_Disposed(object sender, EventArgs e)
            {
                DevExpress.ExpressApp.ConditionalEditorState.Core.EditorStateRuleManager.CustomParseProperties -= EditorStateRuleManager_CustomParseProperties;
            }
            private void EditorStateRuleManager_CustomParseProperties(object sender, DevExpress.ExpressApp.ConditionalEditorState.Core.CustomParsePropertiesEventArgs e) {
                if (e.TypeInfo.Type == typeof(FeatureCenter.Module.ConditionalEditorState.HideShowEditorsObject)) {
                    e.Handled = true;
                }
            }
            private void CustomizeAppearanceDemoObject(ITypeInfo ti) {
                if(ti != null) {
                    IMemberInfo mi1 = ti.FindMember("HideSimpleLayoutItem");
                    if(mi1 == null) {
                        mi1 = ti.CreateMember("HideSimpleLayoutItem", typeof(bool));
                        mi1.AddAttribute(new ImmediatePostDataAttribute());
                        mi1.AddAttribute(new VisibleInListViewAttribute(false));
                        mi1.AddAttribute(new VisibleInLookupListViewAttribute(false));
                    }
                    IMemberInfo mi2 = ti.FindMember("HideSimpleLayoutGroup");
                    if(mi2 == null) {
                        mi2 = ti.CreateMember("HideSimpleLayoutGroup", typeof(bool));
                        mi2.AddAttribute(new ImmediatePostDataAttribute());
                        mi2.AddAttribute(new VisibleInListViewAttribute(false));
                        mi2.AddAttribute(new VisibleInLookupListViewAttribute(false));
                    }
                    IMemberInfo mi3 = ti.FindMember("HideTabPageGroup");
                    if(mi3 == null) {
                        mi3 = ti.CreateMember("HideTabPageGroup", typeof(bool));
                        mi3.AddAttribute(new ImmediatePostDataAttribute());
                        mi3.AddAttribute(new VisibleInListViewAttribute(false));
                        mi3.AddAttribute(new VisibleInLookupListViewAttribute(false));
                    }
                }
            }
            protected override BusinessClassesList GetBusinessClassesCore() {
                BusinessClassesList classesList = base.GetBusinessClassesCore();
                classesList.Add(typeof(OidGenerator));
                return classesList;
            }
            protected override void CustomizeModelApplicationCreatorProperties(ModelApplicationCreatorProperties creatorProperties) {
                base.CustomizeModelApplicationCreatorProperties(creatorProperties);
                creatorProperties.RegisterObject(
                    typeof(DevExpress.ExpressApp.Validation.IModelRuleBase),
                    typeof(FeatureCenter.Module.Validation.RuleStringLengthComparison),
                    typeof(FeatureCenter.Module.Validation.IRuleStringLengthComparisonProperties));
                creatorProperties.RegisterObject(
                    typeof(DevExpress.ExpressApp.Validation.IModelRuleBase),
                    typeof(FeatureCenter.Module.Validation.CodeRuleObjectIsValidRule),
                    typeof(DevExpress.Persistent.Validation.IRuleBaseProperties));
            }
            protected override ModuleTypeList GetRequiredModuleTypesCore() {
                ModuleTypeList moduleTypeList = base.GetRequiredModuleTypesCore();
                moduleTypeList.Add(typeof(DevExpress.ExpressApp.ConditionalAppearance.ConditionalAppearanceModule));
                moduleTypeList.Add(typeof(DevExpress.ExpressApp.SystemModule.SystemModule));
                return moduleTypeList;
            }
            public override void AddGeneratorUpdaters(ModelNodesGeneratorUpdaters updaters) {
                base.AddGeneratorUpdaters(updaters);
                updaters.Add(new ModelImageSourcesUpdater());
                updaters.Add(new ConditionalEditorStateNodesGeneratorUpdater());
                updaters.Add(new CustomDetailViewItemsGenarator());
                updaters.Add(new CustomDetailViewLayoutGenarator());
            }
            public override void Setup(XafApplication application) {
                base.Setup(application);
                if (!XafTypesInfo.IsInitialized) {
                    XafTypesInfo.Instance.AddEntityToGenerate("DcNamedBaseObject", typeof(IDcNamedBaseObject));
                    XafTypesInfo.Instance.AddEntityToGenerate("DcDisableEnableEditorsObject", typeof(IDcDisableEnableEditorsObject));
                    XafTypesInfo.Instance.AddEntityToGenerate("DcDisableEnableEditorsAggregatedObject", typeof(IDcDisableEnableEditorsAggregatedObject));
                    XafTypesInfo.Instance.AddEntityToGenerate("DcDisableEnableEditorsLookupObject", typeof(IDcDisableEnableEditorsLookupObject));
                    XafTypesInfo.Instance.AddEntityToGenerate("DcDisableEnableEditorsCollectionElementObject", typeof(IDcDisableEnableEditorsCollectionElementObject));
                }
                Application.CustomizeFormattingCulture += new EventHandler<CustomizeFormattingCultureEventArgs>(Application_CustomizeFormattingCulture);
                application.CustomProcessShortcut += new EventHandler<CustomProcessShortcutEventArgs>(application_CustomProcessShortcut);
                AuditTrailService.Instance.TimestampStrategy = new LocalAuditTimestampStrategy();
                AuditTrailService.Instance.QueryCurrentUserName += new QueryCurrentUserNameEventHandler(AuditTrailServiceInstance_QueryCurrentUserName);
                AuditTrailService.Instance.CustomizeAuditTrailSettings += new CustomizeAuditSettingsEventHandler(AuditTrailServiceInstance_CustomizeAuditTrailSettings);
                //((ViewVariantsModule)application.Modules.FindModule(typeof(ViewVariantsModule))).GenerateVariantsNode = false;
            }
            public override void CustomizeTypesInfo(ITypesInfo typesInfo) {
                base.CustomizeTypesInfo(typesInfo);
                CustomizeAppearanceDemoObject(typesInfo.FindTypeInfo(typeof(FeatureCenter.Module.ConditionalEditorState.HideShowEditorsObject)));
                CustomizeAppearanceDemoObject(typesInfo.FindTypeInfo(typeof(FeatureCenter.Module.ConditionalAppearance.ConditionalAppearanceHideShowEditorsObject)));
            }
            public override void ExtendModelInterfaces(ModelInterfaceExtenders extenders) {
                base.ExtendModelInterfaces(extenders);
                extenders.Add<IModelMember, IModelClassMemberExtender>();
                extenders.Add<IModelPropertyEditor, IModelPropertyEditorClassMemberExtender>();
                extenders.Add<IModelLayoutGroup, IModelLayoutGroupExtender>();
                extenders.Add<IModelView, IModelViewDemoDescription>();
            }
        }
        public class ModelImageSourcesUpdater : ModelNodesGeneratorUpdater<ImageSourceNodesGenerator> {
            public override void UpdateNode(ModelNode node) {
                //IModelAssemblyResourceImageSource customImages = (IModelAssemblyResourceImageSource)node[CustomImages.CustomImagesAssemblyInfo.AssemblyName];
                //if(customImages == null) {
                //    customImages = node.AddNode<IModelAssemblyResourceImageSource>(CustomImages.CustomImagesAssemblyInfo.AssemblyName);
                //    customImages.Index = node.NodeCount - 1;
                //}
                //customImages.Folder = "Images";
            }
        }
        public class ConditionalEditorStateNodesGeneratorUpdater : ModelNodesGeneratorUpdater<ConditionalEditorStateNodesGenerator> {
            public override void UpdateNode(ModelNode node) {
                ITypeInfo ti = XafTypesInfo.Instance.FindTypeInfo(typeof(FeatureCenter.Module.ConditionalEditorState.HideShowEditorsObject));
                if(ti != null) {
                    IModelEditorStateRule hideSimpleLayoutItem = node.AddNode<IModelEditorStateRule>("HideShowEditorsObject.HideSimpleLayoutItem ID");
                    hideSimpleLayoutItem.ModelClass = node.Application.BOModel[ti.FullName];
                    hideSimpleLayoutItem.Attribute = new EditorStateRuleAttribute("HideShowEditorsObject.HideSimpleLayoutItem ID", "SimpleLayoutItem", EditorState.Hidden, "HideSimpleLayoutItem = 'True'", ViewType.DetailView);

                    IModelEditorStateRule hideSimpleLayoutGroup = node.AddNode<IModelEditorStateRule>("HideShowEditorsObject.HideSimpleLayoutGroup ID");
                    hideSimpleLayoutGroup.ModelClass = node.Application.BOModel[ti.FullName];
                    hideSimpleLayoutGroup.Attribute = new EditorStateRuleAttribute("HideShowEditorsObject.HideSimpleLayoutGroup ID", "SimpleLayoutGroup", EditorState.Hidden, "HideSimpleLayoutGroup = 'True'", ViewType.DetailView);

                    IModelEditorStateRule hideTabPageGroup = node.AddNode<IModelEditorStateRule>("HideShowEditorsObject.HideTabPageGroup ID");
                    hideTabPageGroup.ModelClass = node.Application.BOModel[ti.FullName];
                    hideTabPageGroup.Attribute = new EditorStateRuleAttribute("HideShowEditorsObject.HideTabPageGroup ID", "TabPageGroup", EditorState.Hidden, "HideTabPageGroup = 'True'", ViewType.DetailView);
                }
            }
    }

    这样你就可以直接使用DetailView

  • 相关阅读:
    java类加载过程
    进程和线程
    Java对象的创建
    java异常—检查异常(checked exception)和未检查异常(unchecked exception)
    try...catch...finally语句块
    Mysql数据库索引
    java-生产者消费者模式
    解压字符串
    Java-break,continue,return用法
    归并排序-Java
  • 原文地址:https://www.cnblogs.com/ddlzq/p/2272378.html
Copyright © 2020-2023  润新知