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

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

我们自定义一个命令类。

  1. public class DelegateCommand : ICommand
  2. {
  3. Action _action;
  4. Func<bool> _canAction;
  5. string _Role;
  6. public DelegateCommand(Action action,string Role=null)
  7. {
  8. _Role = Role;
  9. _action = action;
  10. }
  11.  
  12. public DelegateCommand(Action action, Func<bool> canAction, string Role = null)
  13. {
  14. _Role = Role;
  15. _action = action;
  16. _canAction = canAction;
  17. }
  18.  
  19. public bool CanExecute(object parameter)
  20. {
  21. if (_canAction == null)
  22. {
  23. return true;
  24. }
  25. return _canAction.Invoke();
  26. }
  27.  
  28. public event EventHandler CanExecuteChanged
  29. {
  30. add
  31. {
  32. CommandManager.RequerySuggested += value;
  33. }
  34. remove
  35. {
  36. CommandManager.RequerySuggested -= value;
  37. }
  38. }
  39.  
  40. public void Execute(object parameter)
  41. {
  42. if (_action != null)
  43. {
  44. if (_Role!=null)
  45. {
  46. if ( System.Windows.MessageBox.Show("此权限为"+_Role,"",System.Windows.MessageBoxButton.OKCancel)!= System.Windows.MessageBoxResult.OK)
  47. {
  48. return;
  49. }
  50. }
  51. _action.Invoke();
  52. }
  53. }

在Execute时验证权限

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

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

WPF wpf中按钮操作权限控制的更多相关文章

  1. .NetCore中如何实现权限控制 基于Claim角色、策略、基于Claim功能点处理

    .NetCore中如果实现权限控制的问题,当我们访问到一个Action操作的时候,我们需要进行权限控制 基于claims 角色控制 基于角色控制总觉得范围有点过大,而且控制起来感觉也不是太好,举一个例 ...

  2. Vue笔记--通过自定义指令实现按钮操作权限

    经常做中后台系统,此类系统的权限是比较重要,拿自己做过的一些项目做个笔记. Vue实现的中后台管理系统.按钮操作权限的空置一般都是通过自定义指令Vue.directive. <el-button ...

  3. (转)浅析Java中的访问权限控制

    原文地址: http://www.cnblogs.com/dolphin0520/p/3734915.html 今天我们来一起了解一下Java语言中的访问权限控制.在讨论访问权限控制之前,先来讨论一下 ...

  4. 浅析Java中的访问权限控制

    浅析Java中的访问权限控制 今天我们来一起了解一下Java语言中的访问权限控制.在讨论访问权限控制之前,先来讨论一下为何需要访问权限控制.考虑两个场景: 场景1:工程师A编写了一个类ClassA,但 ...

  5. IOS中实例的权限控制

    @public.@protected.@private的使用 在OC中声明一个类的时候,可以使用上面 @public.@protected.@private三个关键字声明实例的权限,例如下面的代码: ...

  6. wpf datagrid 中按钮 动态显示

    /若datagrid出现滚动条可能会出现问题需要加上下面俩句话.//因为出滚动条时,为了显示加速,datagrid会加载一部分数据.另一些数据当滚动时在加载进去 这样初始化获取不到这些数据.//在da ...

  7. Java中的访问权限控制

    Java提供了public, private, protected 三个访问权限修饰词,提供了以下四种访问权限控制机制: 1.包访问权限: 2.Public访问权限: 3.Private访问权限: 4 ...

  8. pc vue 项目中的菜单权限控制

    在pc 管理系统这种类型的产品,通常会涉及到账号权限的控制,不同的账号权限能浏览的功能模块是不同的,对应侧边栏菜单模块的显示也会不同. 场景一.(电商类管理系统) 登录 登录后,依次获取账号 toke ...

  9. Vue多页面 按钮级别权限控制 directive指令控制

    利用driective 构建自己的指令,实现按钮级别权限 项目结构如下: 修改router.js { path: 'schools', name: '列表', component: () => ...

随机推荐

  1. Honeycomb

    Honeycomb http://codeforces.com/gym/102028/problem/F time limit per test 4.0 s memory limit per test ...

  2. 运行php网站需要安装什么

    php的运行环境: 为了能够运行php,有以下两种方法: 1. 使用支持php和MySQL的web主机(): 2. 本机(自己电脑)安装web服务器,然后安装MySQL和php. web虚拟主机: 大 ...

  3. SQL SERVER 和ACCESS、EXCEL的数据导入导出

    SQL SERVER 与ACCESS.EXCEL之间的数据转换SQL SERVER 和ACCESS的数据导入导出[日期:2007-05-06]     来源:Linux公社  作者:Linux 熟 悉 ...

  4. 11-st跳舞消耗体力最少

    /*                                                   炫舞家 ST 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述   ...

  5. 网页flash播放代码

    <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="100%" hei ...

  6. 如何定义一个高逼格的原生JS插件

    插件的需求 我们写代码,并不是所有的业务或者逻辑代码都要抽出来复用.首先,我们得看一下是否需要将一部分经常重复的代码抽象出来,写到一个单独的文件中为以后再次使用.再看一下我们的业务逻辑是否可以为团队服 ...

  7. iis 应用程序预热

    <applicationPools> <add name="appname" managedRuntimeVersion="v4.0" sta ...

  8. 前端之JavaScript笔记4

    一 按键事件 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...

  9. SPSS—回归—二元Logistic回归案例分析

    数据分析真不是一门省油的灯,搞的人晕头转向,而且涉及到很多复杂的计算,还是书读少了,小学毕业的我,真是死了不少脑细胞, 学习二元Logistic回归有一段时间了,今天跟大家分享一下学习心得,希望多指教 ...

  10. svn错误:Can't convert string from 'UTF-8' to native encoding

    如果文件名包含了中文,当执行"svn up ."遇到如下错误时: svn: Can't convert string from 'UTF-8' to native encoding ...