Используя enum в ConverterParameter

Я создаю приложение, которое могут использовать многие пользователи. Каждый пользователь относится к одному из следующих уровней аутентификации:

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. Но это некрасиво и подвержено ошибкам обслуживания (каждый раз при изменении перечисления - метод конвертера должен измениться).

Есть ли лучший способ передать нетривиальный объект в качестве параметра?

36
задан abatishchev 20 April 2012 в 09:34
поделиться