Zitat: |
Wo soll nun der Unterschied zwischen den zwei Zeilen liegen ? |
Das ist eine interessante Frage! Im ersten Fall ist es der Index von perc, im gewünschten Fall ist es eine jahreszahl, welche - da nummerisch - sich auch als index missbrauchen liese.
Das DataGrid wird hier gebunden:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7:
| public class ResultsSession : INotifyPropertyChanged { [...] public ReadOnlyCollection<int> Years { get; private set; } public ObservableCollection<double> Perc { get; private set; } [...] } |
Das Property Years enthält eine Auflistung von Jahreszahlen, zu denen die zusätzlichen dynamischen Spalten gebunden werden. Habe ich nun 5 Jahre, enthält Perc auch nur 5 Werte. Diese Zuweisung erfolgt an andere Stelle:
C#-Quelltext
1: 2: 3: 4: 5:
| for (int i = 0; i < yearsCount; i++) { int year = Years.Min() + i; Perc.Add(((100 * resultsDays.Where(p => p.Blub.Year == year).Sum(r => r.Bla)) / resultsDays.Where(p => p.Blub.Year == year).Sum(r => r.Bla)) - 100); } |
Also irgenwie alles schon bisschen getrickst, und daher fehleranfällig.
Die Lösung die ich suche, müsste ein Binding zu meiner Klasse verwenden ohne zu tricksen. Also years könnte folgende Elemente enthalten: 2005, 2008, 2009. Zu diesen Spalten müsste ich dann die Ergebnisse in Perc speichern. z.B.:
C#-Quelltext
1: 2: 3:
| Perc[2005] = 12,23 Perc[2008] = 10,58 Perc[2009] = 5,49 |
Dann wäre der Index gleich meiner Jahreszahl. Würde vermutlich funktionieren, bisschen mehr getrickst, aber vermutlich besser.