Estoy creando una aplicación que puede ser utilizada por muchos usuarios. Cada usuario se clasifica a uno de los siguientes niveles de autenticación:Uso de enum en el parámetro Converter
public enum AuthenticationEnum
{
User,
Technitian,
Administrator,
Developer
}
Algunos controles (como botones) están expuestos sólo a ciertos niveles de usuarios. tengo una propiedad que tiene el nivel de autenticación del usuario actual:
public AuthenticationEnum CurrentAuthenticationLevel { get; set; }
que desea enlazar esta propiedad a la propiedad 'visibilidad' de algunos controles y pasar un parámetro al método Converter, diciéndole que lo que es el nivel de autenticación más bajo que puede ver el control. Por ejemplo:
<Button Visibility="{Binding Path=CurrentAuthenticationLevel, Converter={StaticResource AuthenticationToVisibility}, ConverterParameter="Administrator"}"/>
significa que sólo el 'Administrador' y 'desarrollador' pueden ver el botón. Desafortunadamente, el código anterior pasa "Administrador" como una cadena. Por supuesto, puedo usar Switch-Case dentro del método del convertidor y convertir la cadena en AuthenticationEnum. Pero esto es feo y propenso a errores de mantenimiento (cada vez que cambia la enumeración, el método del convertidor debería cambiar).
¿Hay una forma mejor de pasar un objeto no trivial como parámetro?
no necesita pasar el 'ConverterParameter' como una cadena –
Responda la respuesta de Fredrik por favor. –
Consulte esto para conocer otros formatos y más detalles - https://stackoverflow.com/questions/359699/passing-an-enum-value-as-command-parameter-from-xaml – akjoshi