Silverlight und DataGrid

Blackhawk50000

Erfahrenes Mitglied
Hallo ich habe noch eine Frage.
Und zwar gehts diesmal um das verfluchte DataGrid und wie man damit eigentlich richtig umgeht.
Sicher es gibt ein haufen Zeugs im internet was mal via google findet, aber keins beantwortet einem fragen wie: wie kann ich meine eigenen spalten definieren und dann eine Liste oder ein ähnliches object den spalten zuweisen.

Und das ist meine Hauptfrage.
Ich will meine Spalten VORHER schon deklarieren und DANN erst meine Daten (eine klasse von Typ Familiy mit Name Nachname zum beispiel) anzeigen lassen********
 
Hallo,
ich hatte auch erst meine Probleme mit dem Datagrid. Aber wenn man es mal verstanden hat, dann ist das echt super.

Also hier mal ein paar Infos:
Die Definition ist denkbar einfach.
Code:
        <data:DataGrid x:Name="GridSamples" HeadersVisibility="All" LoadingRow="GridSamples_LoadingRow" CanUserSortColumns="True" LoadingRowGroup="GridSamples_LoadingRowGroup" AutoGenerateColumns="False" >
        </data:DataGrid>
Hier wird erst einmal ein Datagrid definiert. Wie gewünscht ohne automatische Header. Außerdem kann der User die Daten nachsortieren.

Per Code muss dann natürlich die Sache mit leben gefüllt werden.

Ich habe es mit einer eigenen Datenklasse gemacht.
Hier der Beispielcode:

Code:
 Private Sub newHeader()
        'Schleife über alle Kopfelemente
        For i As Integer = 0 To ElementList.Count - 1
                Dim Elem As ElementConfig = ElementList.Values.ElementAt(i)
            'Neues Kopfelement 
                Dim Col As New DataGridTextColumn
            'Spaltenüberschrift
                Col.Header = Elem.Symbol
            ' verbundenes Datenelement
                Col.Binding = New System.Windows.Data.Binding(Elem.KEY)
                'HHE 05.05.2011 user can reorder samples
                Col.CanUserSort = True
                'HHE 20.06.2011 FontSize changed to 14
                Col.FontSize = 14
             'Spalte dem Grid hinzufügen
                GridSamples.Columns.Add(Col)
        Next
    End Sub

Damit sind schon mal die Spaltenköpfe fertig. Jetzt müssen nur noch die Daten dazu gepackt werden. Das ist am einfachsten in dem man die in eine Liste Packt.

Code:
Dim myDataSource As System.Collections.IEnumerable = Nothing
    Public Sub generate()
      'Hier werden nur Daten umformatiert
        myDataSource = GenerateData(SampleList).ToDataSource
        'daten zuweisen
        GridSamples.ItemsSource = myDataSource 

'updaten, damit die Daten auch angezeigt werden
        GridSamples.UpdateLayout()
    End Sub

Wichtig ist dabei, das die Datasource eine collection ist, von Objekten, welche eine Eigenschaft haben, wie dem Binding endspricht.


Ich hoffe das hilft etwas weiter.


Gruß Henna
 
Zurück