利用MVVM来实现基于角色的权限菜单

      近日来研究了RBAC模型,参考了网上诸多例子,而后利用WPF技术实现了一个基于角色的权限菜单的简单示例,例子非常简单,重在这种模型的应用。将这些概念及例子做一个总结,以便大家交流学习。

      RBAC模型主要是首先将访问权限与角色相关联,然后角色再与用户相关联。

      主要分为三个部分:User用户,Role角色,及Permission权限。

      首先设计数据表:

             Users表:UserID,UserName,UserPwd,RoleID;

             Role表:RoleID,RoleName;

             Permission表:PermissionID,PermissionName;

             RolePermission表:RolePermissionID,RoleID,PermissioID;

设计好数据表以后,就开始项目的编写,因为这段时间研究的是MVVM模式的应用,因此,使用了MVVM模式编写此例。

项目分为Model,View及ViewModel三个部分。Model只要的功能是实体类和提供的服务。实体类是对事物属性抽象构成的类,即代表事物的属性集合,只有属性,没有方法。所提供的服务主要是通过访问数据存储获取数据,来生成实体类的实例,为实体类实例提供数据。ViewModel是View和Model之间的纽带,其过程是将View绑定到ViewModel上,而同时有包装了Model的实体及服务。当用户对界面操作时,会引发ViewModel的变化,ViewModel调用Model中的服务,修改其包装实体或实体集。由于这些实体或实体集同样被绑定到界面上,因此,界面对用户的操作做出响应。

在Service中有两个服务,分别是对于权限的判断,就主界面的显示。

PermissionServie.cs中的内容:

public class PermissionServie : IPermissionServie
    {
        public static int userIDstatic;

        public PermissionServie()
        {
            userIDstatic = 0;
        }

        /// <summary>
   

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
使用 MVVM 模式实现 WPF ListBox 的右键菜单功能,可以按照以下步骤进行: 1. 在 ViewModel 中创建一个 ICommand 属性,用于处理右键菜单命令,例如: ``` public ICommand ContextMenuItemCommand { get; set; } ``` 2. 在 ViewModel 的构造函数中初始化 ContextMenuItemCommand 属性,并定义命令执行的方法,例如: ``` public ViewModel() { ContextMenuItemCommand = new RelayCommand<string>(ExecuteContextMenuItemCommand); } private void ExecuteContextMenuItemCommand(string command) { switch (command) { case "Copy": // 处理复制命令 break; case "Cut": // 处理剪切命令 break; case "Paste": // 处理粘贴命令 break; default: break; } } ``` 3. 在 XAML 中将 ContextMenuItemCommand 属性绑定到 ListBox 控件的 ContextMenu 中的 MenuItem 控件的 Command 属性,例如: ``` <ListBox> <ListBox.ContextMenu> <ContextMenu> <MenuItem Header="复制" Command="{Binding ContextMenuItemCommand}" CommandParameter="Copy" /> <MenuItem Header="剪切" Command="{Binding ContextMenuItemCommand}" CommandParameter="Cut" /> <MenuItem Header="粘贴" Command="{Binding ContextMenuItemCommand}" CommandParameter="Paste" /> </ContextMenu> </ListBox.ContextMenu> </ListBox> ``` 4. 运行程序并在 ListBox 上右键单击以查看菜单。 这样,当用户在 ListBox 上右键单击时,将会显示一个包含复制、剪切和粘贴菜单项的上下文菜单,并且当用户选择其中的菜单项时,会触发 ViewModel 中定义的 ContextMenuItemCommand 命令,并执行相应的命令处理方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值