首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IValueConverter不起作用

IValueConverter不起作用
EN

Stack Overflow用户
提问于 2014-01-03 19:35:55
回答 1查看 217关注 0票数 0

我要为我的系统创建一个用户权限验证,我已经创建了一个包含所有类型权限的enum class Permission,例如: CanInsert、CanEdit、CanAccess、CanDelete等等.

在我的class User中,有一个包含该用户拥有的所有权限的属性列表。

我创建了一个用于控件可见性的converter PermissionToVisibleHiddenConverter

代码语言:javascript
复制
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();
    }
}

但是当我尝试用这个代码绑定时,它不起作用。

代码语言:javascript
复制
<!--<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。

代码语言:javascript
复制
public partial class MainWindow : Window
{
    User Loger { get; set; }

    public MainWindow()
    {
        InitializeComponent();
    }
}

此代码不会抛出任何异常或错误,只需不做任何操作即可。

问题在哪里?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-03 20:46:47

你的财产不是公共的,你需要通知

代码语言:javascript
复制
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));
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20911392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档