2012-06-21 153 views
0

幾個小時前我發佈了一個問題(http://stackoverflow.com/questions/11134264/c-sharp-add-properties-at-runtime)。我問到了用新的屬性擴展現有的類。而且,那很好。我管理添加新的propertis,但現在我需要添加GroupDescription到PagedCollectionView,基於dinamically添加的屬性。這意味着,我有類綁定到自定義屬性

MyClass 
{ 
    string _name; 
    string _phone; 
} 

現在,我想dinamically添加新的特性(JOBTITLE,位置),用生成的值,並定義JOBTITLE和位置GroupDescriptions。 隨着提到的實現,我

Dictionary<string, string> Attributes; 

但是,如果我說

collection.AddGroupDescription(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不支持綁定到多個源。我認爲你最好的選擇是在實例化時動態填充這個類的兩個屬性。這可以使用foreach循環對可觀察的收集項目執行,並且顯示會自動更新。 – Stainedart

+0

好吧,我現在要這樣做,但我認爲必須有不同的解決方案:)重點是,我沒有這些屬性在類中,我想在類初始化時添加它們......無論如何,謝謝你爲你提供幫助。 – Srecko

相關問題