Динамически назначать разрешения для пользовательского интерфейса 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.
Мои вопросы это:
Является ли приведенный выше пример лучшим способом выполнить это или (как я думал) динамически загружать привязки видимости динамически.
Любая помощь будет оценена.
Ноэль.