WPF wpf中按钮操作权限控制

本文介绍在WPF应用程序中实现按钮操作权限控制的方法。通过自定义命令类DelegateCommand,结合角色权限验证,在按钮触发前判断是否有执行权限。文章提供具体代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文: WPF wpf中按钮操作权限控制

权限控制我们有很多种方式可以实现。

这次项目中做个简单的权限控制,我们在所有按钮触发前判断,有权限则可执行。

我们自定义一个命令类。

 public class DelegateCommand : ICommand
    {
        Action _action;
        Func<bool> _canAction;
        string _Role;
        public DelegateCommand(Action action,string Role=null)
        {
            _Role = Role;
            _action = action;
        }

        public DelegateCommand(Action action, Func<bool> canAction, string Role = null)
        {
            _Role = Role;
            _action = action;
            _canAction = canAction;
        }

        public bool CanExecute(object parameter)
        {
            if (_canAction == null)
            {
                return true;
            }
            return _canAction.Invoke();
        }

        public event EventHandler CanExecuteChanged
        {
            add
            {
                CommandManager.RequerySuggested += value;
            }
            remove
            {
                CommandManager.RequerySuggested -= value;
            }
        }
          

        public void Execute(object parameter)
        {
            if (_action != null)
            {
                if (_Role!=null)
                {
                   if ( System.Windows.MessageBox.Show("此权限为"+_Role,"",System.Windows.MessageBoxButton.OKCancel)!= System.Windows.MessageBoxResult.OK)
                    {
                        return;
                    }
                }
                _action.Invoke();
            }
        }

在Execute时验证权限

用的时候将此按钮的权限对象传入Command

AbnormalCommand = new DelegateCommand<string>((p) => Messenger.Default.Send<string>(p, "HomeNavgation"),"Abnormal Button Role");

 

posted on 2019-07-01 08:39 NET未来之路 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/11112123.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值