@jstuardo - если размер списка не указан, он должен принимать ширину столбца значений сетки свойств (с минимальным размером, если сетка мала). В противном случае вы можете установить его ширину вручную. Или задать другой вопрос.

у взять объект, скажем, этот объект:

public class BenchmarkList
{
    public string ListName { get; set; }
    public IList<Benchmark> Benchmarks { get; set; }
}

и чтобы этот объект отображал свое ListName в качестве части «name» в PropertiesGrid (было бы неплохо «Benchmark»), а для части «value» в PropertyGrid должен быть раскрывающийся список IList <> Benchmarks :

вот эталонный объект

public class Benchmark
{
    public int ID {get; set;}
    public string Name { get; set; }
    public Type Type { get; set; }
}

Я бы хотел, чтобы в раскрывающемся списке отображалось свойство Имя эталонного теста для того, что могут видеть пользователи. Вот наглядный пример:

Итак, по сути, я пытаюсь получить коллекцию объектов Benchmark в раскрывающемся списке, и эти объекты должны отображать свое свойство Name в качестве значения в раскрывающемся списке.

Я читал другие статьи об использовании PropertiesGrid, в том числеЭТО а такжеЭТО, но они сложнее, чем я пытаюсь сделать.

Я обычно работаю над серверными вещами и не имею дело с пользовательским интерфейсом через WebForms или WinForms, так что эта PropertiesGrid действительно возьмет меня с собой ...

Я знаю, что мое решение заключается в реализации «ICustomTypeDescriptor», который позволит мне сообщить PropertiesGrid, какие значения он должен отображать, независимо от свойств объекта, к которому я хочу привязаться в раскрывающемся списке, но я просто не уверен, как и где это реализовать.

Любые указатели / помощь будет высоко ценится.

Спасибо майк

ОБНОВИТЬ:

Хорошо, я немного изменил детали. Раньше я шел за борт с объектами, которые, как я думал, должны быть задействованы, так что вот мой новый подход.

У меня есть объект под названием Analytic. Это объект, который должен быть привязан к PropertiesGrid. Теперь, если я предоставлю свойство, имеющее тип enum, PropertiesGrid позаботится о раскрывающемся списке для меня, что очень приятно. Если я выставлю свойство, которое является коллекцией пользовательского типа, PropertiesGrid не так хорош ...

Вот код для Analytic, объект, который я хочу привязать к PropertiesGrid:

public class Analytic
{ 
    public enum Period { Daily, Monthly, Quarterly, Yearly };
    public Analytic()
    {
        this.Benchmark = new List<IBenchmark>();
    }
    public List<IBenchmark> Benchmark { get; set; }
    public Period Periods { get; set; }
    public void AddBenchmark(IBenchmark benchmark)
    {
        if (!this.Benchmark.Contains(benchmark))
        {
            this.Benchmark.Add(benchmark);
        }
    }
}

Вот краткий пример двух объектов, которые реализуют интерфейс IBenchmark:

public class Vehicle : IBenchmark
{
    public Vehicle()
    {
        this.ID = "00000000-0000-0000-0000-000000000000";
        this.Type = this.GetType();
        this.Name = "Vehicle Name";
    }

    public string ID {get;set;}
    public Type Type {get;set;}
    public string Name {get;set;}
}

public class PrimaryBenchmark : IBenchmark
{
    public PrimaryBenchmark()
    {
        this.ID = "PrimaryBenchmark";
        this.Type = this.GetType();
        this.Name = "Primary Benchmark";
    }

    public string ID {get;set;}
    public Type Type {get;set;}
    public string Name {get;set;}
}

Эти два объекта будут добавлены в коллекцию Benchmark List объекта Analytic в коде WinForms:

private void Form1_Load(object sender, EventArgs e)
{
    Analytic analytic = new Analytic();
    analytic.AddBenchmark(new PrimaryBenchmark());
    analytic.AddBenchmark(new Vehicle());
    propertyGrid1.SelectedObject = analytic;
}

Вот скриншот вывода в PropertiesGrid. Обратите внимание, что свойство, представленное в виде enum, получает хороший выпадающий список без работы, но свойство, представленное как из List on, получает значение (Collection). Когда вы нажимаете (Коллекция), вы получаете редактор Коллекции, а затем можете видеть каждый объект и его соответствующие свойства:

Это не то, что я ищу. Как и в моем первом снимке экрана в этом посте, я пытаюсь отобразить коллекцию свойств Benchmark List в раскрывающемся списке, в котором свойство name объекта отображается как текст того, что может быть отображено ...

Спасибо

Ответы на вопрос(1)

Ваш ответ на вопрос