Asignar permisos de UI WPF dinámicamente [duplicado]
Posible duplicado:
Configuración de permisos de interfaz de usuario de WPF en código detrás
Estoy empezando a trabajar con WPF y quiero crear una aplicación que muestre / oculte los controles según el usuario (AD) y su (s) rol (es) (Personalizado).
Logré que esto funcionara utilizando una clase que hereda MarkupExpension e IValueConverter.
public class RoleToVisibilityConverter : MarkupExtension,IValueConverter
{
public RoleToVisibilityConverter()
{
}
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var principal = value as GenericPrincipal;
bool IsValidUser = false;
if (principal != null)
{
foreach (String role in parameter.ToString().Split(';'))
{
if (principal.IsInRole(role))
{
IsValidUser = true;
break;
}
}
return IsValidUser ? Visibility.Visible : Visibility.Collapsed;
}
return null;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
public override object ProvideValue(IServiceProvider serviceProvider)
{
return this;
}
}
Y en el XAML agrego el siguiente enlace para Visibilidad:
Visibility = "{Fuente de enlace = {x: Systhread estático: Thread.CurrentPrincipal}, ConverterParameter = admin; editor; readonly, Converter = {rv: RoleToVisibilityConverter}}
Nota: También necesito agregar xmlns: systhread = "clr-namespace: System.Threading; assembly = mscorlib" a MainWindow.xaml.
Mis preguntas son:
Es el ejemplo anterior la mejor manera de lograr esto o (como estaba pensando) cargar dinámicamente los enlaces de visibilidad dinámicamente.
Cualquier ayuda sería apreciada.
Navidad.