C# 如何控制WPF Catel框架中两个以上角色的访问?
例如,我有3个角色:管理员、开发人员、项目经理。 如果我想禁用除 管理员,我会写:C# 如何控制WPF Catel框架中两个以上角色的访问?,c#,wpf,authentication,mvvm,catel,C#,Wpf,Authentication,Mvvm,Catel,例如,我有3个角色:管理员、开发人员、项目经理。 如果我想禁用除 管理员,我会写: <i:Interaction.Behaviors> <catel:Authentication AuthenticationTag="admin" Action="Collapse" /> </i:Interaction.Behaviors> 效果很好 但是,如果我想为管理员和项目经理(2个或更多角色)启用控制,并为其他用户禁用控制,我将这样写: 它不起作
<i:Interaction.Behaviors>
<catel:Authentication AuthenticationTag="admin" Action="Collapse" />
</i:Interaction.Behaviors>
效果很好
但是,如果我想为管理员和项目经理(2个或更多角色)启用控制,并为其他用户禁用控制,我将这样写:
它不起作用
请帮帮我
这是AuthenticationProvider.cs
公共类AuthenticationProvider:IAAuthenticationProvider
{
///
///获取或设置用户当前所在的角色。
///
///角色。
公共字符串角色{get;set;}
公共布尔值可执行命令(ICATELCOMAND命令,对象命令参数)
{
返回true;
}
public bool hasaccesstoielement(FrameworkElement元素、对象标记、对象身份验证标记)
{
var authenticationTagAsString=authenticationtagas字符串;
if(authenticationTagaString!=null)
{
if(string.Compare(authenticationTagaString,Role,true)=0)
{
返回true;
}
}
返回false;
}
}
也许您可以这样做:
<i:Interaction.Behaviors>
<catel:Authentication AuthenticationTag="admin;project manager" Action="Collapse" />
</i:Interaction.Behaviors>
因此,您提供的角色可以以分号分隔的列表形式查看特定的UI元素。如果列表包含当前的角色
,则可以访问UI元素,如果不包含,则返回false,因此隐藏UI元素
public class AuthenticationProvider : IAuthenticationProvider
{
/// <summary>
/// Gets or sets the role the user is currently in.
/// </summary>
/// <value>The role.</value>
public string Role { get; set; }
public bool CanCommandBeExecuted(ICatelCommand command, object commandParameter)
{
return true;
}
public bool HasAccessToUIElement(FrameworkElement element, object tag, object authenticationTag)
{
var authenticationTagAsString = authenticationTag as string;
if (authenticationTagAsString != null)
{
if (authenticationTagAsString.Contains(Role))
{
return true;
}
}
return false;
}
}