Laden...

Window mit CodeBehind erstellen und Stackpanel oder Grid für Children einfügen

Erstellt von oehrle vor 11 Jahren Letzter Beitrag vor 11 Jahren 3.890 Views
O
oehrle Themenstarter:in
461 Beiträge seit 2009
vor 11 Jahren
Window mit CodeBehind erstellen und Stackpanel oder Grid für Children einfügen

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?

5.658 Beiträge seit 2006
vor 11 Jahren

Hi oehrle,

lies dich mal ins Thema DataBinding ein, damit solltest du weiterkommen.

Christian

Weeks of programming can save you hours of planning

O
oehrle Themenstarter:in
461 Beiträge seit 2009
vor 11 Jahren
Databinding

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 .

5.658 Beiträge seit 2006
vor 11 Jahren

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

O
oehrle Themenstarter:in
461 Beiträge seit 2009
vor 11 Jahren
Link hatte ich auch schon...

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.

5.658 Beiträge seit 2006
vor 11 Jahren

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

2.298 Beiträge seit 2010
vor 11 Jahren

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 |

O
oehrle Themenstarter:in
461 Beiträge seit 2009
vor 11 Jahren
gelöst

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