如何指定Telerik PropertyGrid使用的ListCollectionView?

时间:2015-01-11 13:01:59

标签: c# wpf telerik

我使用PropertyGrid查看,编辑,添加和删除我无法修改的外部类属性的值。该类包含许多List<string>List<int>List<Guid>属性,因此这意味着我无法使用PropertyGrid向这些列表添加值,因为它不知道如何实例化它们

所以我最初的想法是使用看起来像这样的类来包装每个类型:

public class ValueOf<T>
{
   public T Value { get; set; }

   public ValueOf()
   {
       Value = default(T);
   }

   public ValueOf(T valueContent)
   {
       Value = valueContent;
   }
}

...但这意味着我必须为此类使用View Model我无法修改和编写每个属性,如下所示:

public ObservableCollection<ValueOf<string>> Names{ get; set; }

所以我搜索了一下,我找到了这个链接:http://www.michaelruck.de/2012_07_01_archive.html

它讨论了编写自定义ListCollectionView以使添加在DataGrid中工作,但它似乎也适用于PropertyGrid。它看起来像这样:

public class TypedListCollectionView<T> : ListCollectionView, IEditableCollectionView
{
    private Func<T> factory;

    public TypedListCollectionView(IList collection, Func<T> factory)
        : base(collection)
    {
        this.factory = factory;
    }

    bool IEditableCollectionView.CanAddNew
    {
        get
        {
            return this.CanAddNewItem;
        }
    }

    object IEditableCollectionView.AddNew()
    {
        T obj = this.factory();
        return this.AddNewItem(obj);
    }
}

我的问题是如何指定PropertyGrid应该使用哪个ListCollectionView?我是WPF的新手,似乎我错过了一些东西。

0 个答案:

没有答案