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?
Hi oehrle,
lies dich mal ins Thema DataBinding ein, damit solltest du weiterkommen.
Christian
Weeks of programming can save you hours of planning
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:
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
Hi, den Link hatte ich auch schon. Nun leider ist da ja gerade folgendes:
<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“
>
<StackPanel Name=“splMain“>
<Button Name=“btnAddMore“ Click=“btnAddMore_Click“>Add Another</Button>
</StackPanel>
</Window>
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.
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
Würde es zur Not nicht auch das hinzufügen eines Stackpanels oder ähnlichem tun?^^
Also Quasi:
Window wnd = new Window();
StackPanel pnl = new StackPanel();
wnd.Children.Add(pnl);
DatGrid dg = new DataGrid();
dg.ItemsSource = tbl.AsDataView();
pnl.Children.Add(dg):
Wissen ist nicht alles. Man muss es auch anwenden können.
PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |
Hallo, hatte doch gewußt ich hatte irgendwo etwas gesehen. Hat geklappt. Danke euch für die Hilfe, und hier für weitere die auf der Suche sind, ein Link:
http://msdn.microsoft.com/de-de/library/system.windows.controls.grid.aspx