2015-05-02 3 views
0

У меня есть класс, который выглядит следующим образом:Установка PropertyGrid.SelectedObject во время выполнения

public class DashWidgetParameter 
{ 
    public string Name { get; set; } 
    public Type ValueType { get; set; } 
    public object Value { get; set; } 

    public DashWidgetParameter(string ParameterName, Type ParameterType, object Value) 
    { 
     this.Name = ParameterName; 
     this.ValueType = ParameterType; 
     this.Value = Value; 
    } 
} 

Этот класс используется некоторыми другими объектами в моем приложении для хранения своих соответствующих параметров. Каждый объект имеет линию

List<DashWidgetParameter> Parameters = new List<DashWidgetParameter>(); 

следуют несколько строк, подобные этим:

paramList.Add(new DashWidgetParameter("Item Type", typeof(int), 40)); 
paramList.Add(new DashWidgetParameter("Status Categories", typeof(List<string>), new List<string> { "New", "Configured", "Processed" })); 

Эти последние несколько строк различны для каждого объекта, так что я не мог определить один класс с заданным списком свойств ,

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

Я не есть объект, который можно установить в PropertyGrid.SelectedObject и неудивительно, если установить его в Parameters (определенный выше как List<DashWidgetParameter> Parameters) PropertyGrid содержит только два свойства, Count и Capacity.

Не могу ли я пройти через список Parameters и добавить их по одному на PropertyGrid?

ответ

0

Попробуйте это:

public class ParameterList { 
    public List<DashWidgetParameter> Parameters { get; set; } 
} 

PropertyGrid.SelectedObject = new ParameterList { Parameters = paramList }; 

В качестве альтернативы, вы можете реализовать настраиваемое представление (http://www.codeproject.com/Articles/4448/Customized-display-of-collection-data-in-a-Propert).

+0

Я не понимаю, как это было бы решением. Если я это сделаю, свойство PropertyGrid будет иметь только одно свойство, называемое Parameters. –

+0

@DewaldSwanepoel Да, и вы получите кнопку (с многоточием), чтобы вызвать список элементов. Просто попробуйте и убедитесь, что он соответствует вашим потребностям. – romanoza

+0

ОК, я пробовал, и это действительно не то, что мне нужно. Прежде всего, как я подозревал, он дает одно свойство в PropertyGrid с именем «Параметры». Если я нажимаю на эллипсы значения (Collection), он выводит редактор коллекций, показывающий разные свойства как члены, и единственным «свойством» для каждого члена, который может быть фактически изменен, является имя, а не значение. –

Смежные вопросы