C# Objekt an Control binden (WPF)

Roper

Cadet 4th Year
Registriert
Mai 2009
Beiträge
122
Hallo zusammen,

ich beschäftige mich jetzt neuerdings mit WPF. Dabei gibt es ja die Möglichkeit Objekte (bzw. bestimmte Eigenschaften) an ein Control zu binden.

In meinem speziellen Fall sieht es folgendermaßen aus. Ein Objekt hat eine Eigenschaft, die eine Liste aus anderen Objekten bildet. Diese Objekte haben Eigenschaften die ich einem DataGrid zuweisen möchte (DataGrid aus dem WPFToolkit).

Zur Veranschaulichung ein kleines Beispiel wie meine Klassen aussehen (in Wahrheit etwas abstrakter):
Die Klasse Haus hat als Eigenschaft Fenster eine Liste von Fenster Objekten. Die Fenster Objekte haben wiederum Eigenschaften wie z.B. string Farbe; usw.

Jetzt ginge es mir darum die Eigenschaften wie Farbe usw. an das DataGrid zu binden um diese ganzen Listen nicht alle per Code selber eintragen zu müssen.

Leider sind meine Kenntnisse bezüglich dem DataBinding wohl noch nicht wirklich umfassend. Das Objekt wird beim Initialisieren des Windows erstellt. Allerdings müsste ich um es im XAML ansprechen zu können irgendwie in die Resource einbinden?

Gruß Roper
 
Ich kenn das DataGrid vom WPF Toolkit nicht, aber wenns genau so funktioniert wie das "normale" WindowsForms DataGrid, dann geht das eigentlich ziemlich einfach:

Du hast ja ne Liste von Objekten, wenn ich das richtig verstehe, also kannst du die Liste ganz einfach der DataGridView.DataSource Eingeschaft zuweisen.

PHP:
List<Fenster> list = new List<Fenster>();
//Fenster zur Liste hinzufügen

dataGridView1.DataSource = list;

Das DataGridView generiert dann selbstständig Spalten für jede Eigenschaft deiner Fenster Klasse.
 
Danke für die Antwort aber leider hat das WPF GridView keine Eigenschaft DataSource.

Binding im XAML sollte eigentlich dafür ganz gut geeignet sein, da ich dort einmal ja das Objekt anbinden kann, und bei den einzelnen Columns dann ja per Path auf die Eigenschaft verweisen könnte. Allerdings ist mir das mit den StaticResource bzw. Resourcen allgemein noch schleierhaft. Mein Objekt wird ja zur Laufzeit erstellt und ist im XAML nicht so einfach verfügbar.
 
Danke für die Antwort.

Um nochmal auf das Fensterbeispiel von oben aufzusetzen. Meine List<Fenster> ist die Eigenschaft Haus.Fenster und wenn ich das dann als DataContext dem Grid zuweise ist die Frage ob das Grid die einzelnen Fenster-Objekte dann auf jeweils eine Reihe aufteilt.

Aktuell sieht es bei mir so aus, dass ich den DataContext auf die Liste gelegt habe und in den einzelnen Spalten des Grids dann per Binding die jeweilige Eigenschaft der einzelnen Objekte in der Liste angebe.

Also z.B.

Code:
<toolkit:DataGridTextColumn Header="Farbe" Width="0.2*" Binding="{Binding Path=FensterFarbe}" />

Das scheint allerdings nicht so richtig zu klappen (es wird nichts eingetragen). Wobei sich bei mir die Frage aufdrängt ob das so einfach möglich ist?
 
Ok, habs hinbekommen. Die Eigenschaft an die ich die Liste zuweisen muss heißt ItemsSource.
 
Zurück
Oben