我要为我的系统创建一个用户权限验证,我已经创建了一个包含所有类型权限的enum class Permission,例如: CanInsert、CanEdit、CanAccess、CanDelete等等.
在我的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不是null。
public partial class MainWindow : Window
{
User Loger { get; set; }
public MainWindow()
{
InitializeComponent();
}
}此代码不会抛出任何异常或错误,只需不做任何操作即可。
问题在哪里?
发布于 2014-01-03 20:46:47
你的财产不是公共的,你需要通知
public partial class Window1 : Window,INotifyPropertyChanged
{
public Window1()
{
InitializeComponent();
}
User loger;
public User Loger
{
get{return loger;}
set { loger= value; OnPropertyChanged("Loger "); }
}
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName)
{
if (this.PropertyChanged != null)
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}https://stackoverflow.com/questions/20911392
复制相似问题