在属性网格中列出c#

时间:2013-04-09 06:28:31

标签: c# list propertygrid

我有一个用于Property Grid的列表,我想消除添加按钮的可能性 - 添加。

但我希望能够编辑已有的数据。

我的清单:

    private List<Pos> _position = new List<Pos>();

    public List<Pos> Position
    {
        get { return _position; }
        set
        {
            _position = value;
            NotifyPropertyChanged("Position");
        }
    }

Pos.cs:

public class Pos
{
    public string Name { get; set; }
    public double Postion { get; set; }

    public Pos()
        : this(null, Double.NaN)
    {

    }

    public Pos(string name, double postion)
    {
        this.Name = name;
        this.Postion = postion;
    }
}

我尝试将[ReadOnly(true)]放在列表上方,但仍然可以选择添加。

有没有人知道该怎么做?

1 个答案:

答案 0 :(得分:0)

我取消了添加/删除选项,如下所示:

我创建了一个泛型类:

public class PosList<T> : List<T>, ICollection<T>, IList
{

    public ValuesList(IEnumerable<T> items) : base(items) { }

    bool ICollection<T>.IsReadOnly { get { return true; } }

    bool IList.IsReadOnly { get { return true; } }

}

这样就可以在代码中添加/删除,但不能通过集合编辑器。

使用:

private PosList<Pos> _position = new PosList<Pos>(new List<Pos>());

public PosList<Pos> Position
{
    get { return _position; }
    set
    {
        _position = value;
        NotifyPropertyChanged("Position");
    }
}