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.

Respuestas a la pregunta(1)

Su respuesta a la pregunta