2012-06-21 3 views
0

Несколько часов назад я разместил вопрос (http://stackoverflow.com/questions/11134264/c-sharp-add-properties-at-runtime). Я спросил о расширении существующего класса новыми свойствами. И это было нормально. Мне удалось добавить новый propertis, но теперь мне нужно добавить GroupDescription в PagedCollectionView на основе динамически добавленных свойств. Это означает, что у меня есть классПривязка к пользовательским свойствам

MyClass 
{ 
    string _name; 
    string _phone; 
} 

Теперь я хочу, чтобы динамически добавлять новые свойства (JobTitle, должность), с сгенерированных значений, и определить GroupDescriptions для JobTitle и позиции. С упомянутой реализации, у меня есть

Dictionary<string, string> Attributes; 

Но, если я скажу,

collection.AddGroupDescription(key); 

будет группировать данные на основе Key - JobTitle, а не по значению.

Спасибо, Joksimovic

+0

Почему вы не используете наблюдаемую коллекцию, а не в dictionnary? – Stainedart

+0

В чем разница? У меня, вероятно, еще была бы пара ключ-значение? – Srecko

+0

Я говорю, потому что, если вы включаете название и позицию задания в объект MyClass, вы можете иметь 'collection.AddGroupDescription (jobtitle)' и он будет сгруппирован, как ожидалось. – Stainedart

ответ

0

Так стандартный способ достижения этой цели, как следующий

MyClass 
{ 
    string _name; 
    string _phone; 
    string _jobTitle; 
    string _position; 
} 


private ObservableCollection<MyClass> collection = //fetch from web service or something 
PagedCollectionView pcv = new PagedCollectionView(collection); 
pcv.GroupDescriptions.Add(new PropertyGroupDescription("JobTitle")); 
DataGrid.ItemsSource = pcv; 
+0

Теперь я вижу ... но проблема заключается в том, что _jobTitle и/или _position следует добавлять динамически. Они не входят в класс, их следует добавлять во время создания класса. После этого все должно быть как описано. – Srecko

+0

DataGrids не поддерживают привязку к нескольким источникам. Я считаю, что ваш лучший выбор - динамически заполнять 2 свойства класса при создании экземпляра. Это может быть выполнено с использованием цикла foreach для наблюдаемых элементов коллекции, и дисплей будет обновляться автоматически. – Stainedart

+0

ОК, я сделаю это пока, но я думаю, что должно быть другое решение :) Дело в том, что у меня нет этих свойств в классе, я хочу добавить их во время инициализации класса ... в любом случае, спасибо вам за помощь. – Srecko

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