Hallo, ich möchte dynamisch aus dem Code heraus ein Window erstellen, und dem dann DataGrids oder ähnliches zufügen. Wie mache ich das, da ich einer Window-Instanz kein Control zuweisen kann, da noch kein Grid oder Stackpanel im Window definiert ist. Wie mache ich da?
Bist dir sicher? Was soll denn das miteinander zu tun haben, bzw. mit dem DataBindig?
Hatte das schonmal irgendwo gemacht, aber nicht notiert.
Ich will:
- per Code ein Window erstellen
- ich erstelle per Code ein DataGrid und übergebe Daten die angezeigt werden sollen
- ich will das DataGrid dem Window übergeben (per Code) *.Children.Add()
Leider hat das Window ja noch kein StackPanel oder Grid,wo ich das DataGrid rein schmeißen kann .
Naja, bei WPF ist es einfacher, die Controls automatisch erstellen zu lassen, indem man MVVM verwendet und die Controls einfach an seine Daten bindet. Wenn du trotzdem Controls im Code erstellen willst, hilft dir das hier vielleicht weiter: Adding WPF Controls Progrrammatically.
Christian
Weeks of programming can save you hours of planning
Das wäre bei mir ja nicht der Fall, das sieht bei mir (wenn ich das mal so in XAML darstelle) so aus:
<Window x:Class=“WPFSample001.AddControls“
xmlns=“http://schemas.microsoft.com/winfx/2006/xaml/presentation“
xmlns:x=“http://schemas.microsoft.com/winfx/2006/xaml“
Title=“AddControls“ Height=“114“ Width=“212“
>
!--< Kein Stackpanel, kein Grid... Wie füge ich solch ein Element im Code Behinde ein ?? />--!
</Window>
Wir mein Problem jetzt klarer?
Im Code behind (Beispiel):
Window wnd = new Window();
DatGrid dg = new DataGrid();
dg.ItemsSource = tbl.AsDataView();
wnd.Children.Add(dg): // das geht ja nicht, weil im wnd kein Panel ist.
Versteht man mein Problem nun besser? Die ganzen Beispiele sind immer sehr XAML-lastig.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von oehrle am .
Window ist ein ContentControl und kann daher nur ein Child haben. Deshalb gibt es kein Property Children, sondern du mußt das Property Content verwenden, um dein Panel hinzuzufügen.
Christian
Weeks of programming can save you hours of planning