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