Я создаю приложение, которое может использоваться многими пользователями. Каждый пользователь классифицируется на один из следующих уровней аутентификации:
public enum AuthenticationEnum
{
User,
Technitian,
Administrator,
Developer
}
Некоторые элементы управления (например, кнопки) отображаются только на определенных уровнях пользователей. У меня есть свойство, которое содержит уровень аутентификации текущего пользователя:
public AuthenticationEnum CurrentAuthenticationLevel { get; set; }
Я хочу привязать это свойство к свойству "Visibilty" некоторых элементов управления и передать параметр методу конвертера, указав ему, что является самым низким уровнем проверки подлинности, который способен видеть элемент управления. Например:
<Button Visibility="{Binding Path=CurrentAuthenticationLevel, Converter={StaticResource AuthenticationToVisibility}, ConverterParameter="Administrator"}"/>
означает, что только кнопка "Администратор" и "Разработчик" могут видеть кнопку. К сожалению, приведенный выше код передает "Администратор" в виде строки. Конечно, я могу использовать Switch-Case внутри метода конвертера и преобразовать строку в AuthenticationEnum. Но это уродливо и подвержено ошибкам обслуживания (каждый раз, когда изменяется перечисление - метод конвертера должен меняться).
Есть ли лучший способ передать не тривиальный объект в качестве параметра?