EPR类企业管理系统

在我们现有系统基础上或全新开发,提供定制服务
为您的企业高效快速实施ERP,WMS,MES,CRM管理系统
全面管控物料仓库、销售业务、采购业务、仓库业务
生产过程、质量检验、组织架构、业务报表


定制
QQ:460-3528

开发
QQ群:3360-90194

源码
微信:136-3650-3721

如何:在代码中停用(隐藏)按钮

动作的可见性由ActionBase.Active属性管理。当此属性返回false时,动作是不可见的。请按照以下步骤停用预定义或自定义操作。在当前示例中,“删除”操作将被禁用。

  • 创建DeactivateDeleteController控制器。要了解如何执行此操作,请参阅“控制器类”文章。
  • 覆盖其OnActivated方法,如下所示。在Action激活后执行此方法,并引发Controller.Activated事件。

    public partial class DeactivateDeleteController : ObjectViewController {
        private const string Key = "Deactivation in code";
        DeleteObjectsViewController DeleteController;
    
        public DeactivateDeleteController() {
            InitializeComponent();
        }
    
        protected override void OnActivated() {
            base.OnActivated();
            DeleteController =
                Frame.GetController<DeleteObjectsViewController>();
    
            if(DeleteController != null) {
                DeleteController.Active[Key] =
                    !(View.ObjectTypeInfo.Type == typeof(Contact) && View is ListView);
            }
        }
    
        protected override void OnDeactivated() {
            if(DeleteController != null) {
                DeleteController.Active.RemoveItem(Key);
                DeleteController = null;
            }
            base.OnDeactivated();
        }
    }
    

    在上面的代码中,将falsetrue值添加到DeleteObjectsViewController的Active BoolList中。结果,对于添加了错误值的View,将隐藏Controller的Actions (在此示例中为Contact List Views)。此方法类似于Controller的ViewController.TargetObjectType和ViewController.TargetViewType属性,但在这里不适用,因为在视图更改时不会自动发生启用禁用的控制器。

注意

XAF提供了其他方法来停用可能更适合您的方案的操作。请参阅ActionBase.Active主题以了解更多信息。

请参阅确定操作的控制器和标识符主题,以了解如何确定哪个控制器提供要隐藏或停用的操作。

要了解在代码中访问现有控制器属性的方法,请参阅“自定义控制器和操作”文章。

相关文章

转载保留此链接,注明出处