Я создаю приложение, которое может использоваться многими пользователями. Каждый пользователь классифицируется к одному из следующих уровней аутентификации:Использование перечисления в ConverterParameter
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. Но это уродливо и подвержено ошибкам обслуживания (каждый раз, когда изменяется перечисление - метод конвертера должен меняться).
Есть ли лучший способ передать не тривиальный объект в качестве параметра?
Вам не нужно передавать 'ConverterParameter' в виде строки –
Ответьте на вопрос Fredrik как ответ. –
См. Это для других форматов и более подробной информации - https://stackoverflow.com/questions/359699/passing-an-enum-value-as-command-parameter-from-xaml – akjoshi