Я хочу, чтобы создать пользователь проверку прав доступа к моей системе, я создал enum class Permission
содержал все типы разрешений, пример: CanInsert, CanEdit, CanAccess, CanDelete и т.д ...IValueConverter не работает
И в моем class User
имеет список свойств содержал все разрешения у этого пользователя
Я создал converter
PermissionToVisibleHiddenConverter
для использования в Видимость управления
public class PermissionToVisibleHiddenConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
User loger = (User)value;
/* Before edit
if (loger.Permissao.Contains(Permission.Principal_AbrirLoja))
return Visibility.Collapsed;
else
return Visibility.Collapsed; */
if (loger.Permissao.Contains(Permission.Principal_AbrirLoja))
return Visibility.Visible;
else
return Visibility.Collapsed;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
Но это не работает, когда я т чень связывание с этим кодом
<!--<MenuItem Header="Abrir loja" Visibility="{Binding Loger, Converter={StaticResource BoolToVisibleHiddenConverter}, ElementName=window, TargetNullValue=Collapsed, Mode=OneWay}"/>-->
<MenuItem Header="Abrir loja" Visibility="{Binding Loger, Converter={StaticResource PermissionToVisibleHiddenConverter }, ElementName=window, TargetNullValue=Collapsed, Mode=OneWay}"/>
Где окно это MenuItem родитель это похоже, но Loger не является нулевым
public partial class MainWindow : Window
{
User Loger { get; set; }
public MainWindow()
{
InitializeComponent();
}
}
Этот код не будет бросать любое исключение или ошибку, просто ничего не делать
Где проблема?
В состоянии 'loger.Permissao.Contains (Permission.Principal_AbrirLoja)' вы в обоих случаях возвращение 'Visibility.Collapsed'. Так задумано или это опечатка? –
Да, я положил его на тест, но мой MenuItem всегда видимый – Lai32290
В 'MenuItem' вы используете' BoolToVisibleHiddenConverter', но в вопросе было указано 'PermissionToVisibleHiddenConverter' ... возможно для теста. Во всяком случае, попробуйте установить 'Mode =" TwoWay "' и удалить 'ElementName' (вы также можете удалить 'TargetNullValue'), возможно, поможет. –