我正在构建一个可以被许多用户使用的应用程序。每个用户被归类为下一个身份验证级别之一:
public enum AuthenticationEnum
{
User,
Technitian,
Administrator,
Developer
}
有些控件(如按钮)只对特定级别的用户开放。我有一个属性,用于保存当前用户的身份验证级别:
public AuthenticationEnum CurrentAuthenticationLevel { get; set; }
我想将这个属性绑定到某些控件的“可见性”属性,并向转换器方法传递一个参数,告诉它能够看到控件的最低身份验证级别是什么。
例如:
<Button Visibility="{Binding Path=CurrentAuthenticationLevel, Converter={StaticResource AuthenticationToVisibility}, ConverterParameter="Administrator"}"/>
意思是只有“管理员”和“开发人员”可以看到按钮。不幸的是,上面的代码将“Administrator”作为字符串传递。当然,我可以在转换方法中使用switch/case并将字符串转换为AuthenticationEnum。但这很丑陋,并容易出现维护错误(每次枚举更改时 - 转换方法也需要更改)。
是否有更好的方法来传递非平凡对象作为参数?