Witam
Mam pytanie odnośnie bindowania bardziej złożonych kolekcji do kontrolki DataGrid.
Gdy mamy zwykłą listę przechowującą typy wartościowe, to wystarczy podpiąć listę pod właściwość DataContext lub ściślej pod ItemSource. W przypadku list zawierających typy referyncyjne, musimy określić jak właściwości klasy będą bindowane w DataGrid. Wszystko jest fajnie, gdy pracujemy na modelu danych, gdzie mamy pojedyncze pola, bez żadnych kolekcji. Mam taką klasę:
public class Row
{
public DateTime Timestamp { get; set; }
public IEnumerable<double> Samples { get; set; }
}
Potrzebuję zbindować tak elementy kolekcji typu Row, aby pierwszą kolumną była właściwość Timestamp, a kolejne kolumny zależne od kolekcji Samples, również od jej wielkości. Ile elementów tyle kolumn.
Timestamp |
Variable 1 |
Variable 2 |
... |
26.03.2018 9:15:22 |
0.12412412 |
0.21512515 |
... |
26.03.2018 9:15:23 |
0.32523552 |
0.36324256 |
.... |
Ten trzykropek symbolizuje ciąg dalszy kolumn i wartości. Domyślam sie, że trzeba zrobić jakis model, zawierający ObservableCollection i tą kolekcję podpinać. Ale nie wiem potem jak konkretnie podpinać, aby Timestamp i Samples stanowiły jeden wiersz.
Chciałbym, aby była możliwość późniejszego prostego bindowania jak przy zwykłych kolekcjach, czyli:
DataGrid.ItemSource = rows; // kolekcja typu IEnumerable<Row>
A DataGrid wie, że ma połączyć Timestamp z kolekcją Samples w postaci pojedynzego wiersza i z każdym kolejnym elementem. Domyślam się, że trzeba pobawić się w edycji szablonu DataGrid, ale jestem w tym zielony.