Динамически назначать разрешения для пользовательского интерфейса WPF [дубликат]

Возможный дубликат:
Установка разрешений пользовательского интерфейса WPF в коде

Я начинаю работать с WPF и хочу создать приложение, которое будет отображать / скрывать элементы управления в зависимости от пользователя (AD) и его роли (пользовательских).

Мне удалось заставить это работать с помощью класса, унаследованного от MarkupExpension & 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;
    }
}

И в XAML я добавляю следующую привязку для Visibility:

Visibility = "{Binding Source = {x: Статический systhread: Thread.CurrentPrincipal}, ConverterParameter = admin; редактор; только для чтения, Converter = {rv: RoleToVisibilityConverter}}

Примечание: мне также нужно добавить xmlns: systhread = "clr-namespace: System.Threading; assembly = mscorlib" в MainWindow.xaml.

Мои вопросы это:

Является ли приведенный выше пример лучшим способом выполнить это или (как я думал) динамически загружать привязки видимости динамически.

Любая помощь будет оценена.

Ноэль.

Ответы на вопрос(1)

Ваш ответ на вопрос