Laden...

WPF Elemente mit einem Click Event generieren

Letzter Beitrag vor 2 Jahren 7 Posts 668 Views
WPF Elemente mit einem Click Event generieren

Guten Tag alle zusammen,

ich versuche mich langsam in die ganze C# & WPF Thematik einzuarbeiten.
Ich möchte mit einem Button Click Event eine Combobox auf meiner Oberfläche erzeugen und da habe ich leider keinerlei Ansatz wie ich das Anstellen soll, geschweige den ob dies überhaupt möglich ist. Ich hatte überlegt es mit einem UserControl zu versuchen, dabei bin ich mir nicht sicher wie ich diesen in der Click Methode aufrufe.
Evtl. gibt es schon einen Beitrag dazu und ich habe nur nach den falschen Schlüsselworten gesucht.

Danke schonmal im Voraus.

Hallo und willkommen,

du kannst zwar mit C#-Code genauso wie z.B. in Windows Forms, Steuerelemente erzeugen (z.B. mittels UIElementCollection.Add), bei WPF benutzt man jedoch hauptsächlich direkt XAML (z.B. Templates).
Besser ist jedoch, du benutzt (und lernst) gleich die empfohlene Verwendung mittels MVVM: [Artikel] MVVM und DataBinding
Statt mit Events wird bei MVVM dann mit Commands (ICommand) in dem ViewModel gearbeitet.

Danke für die schnelle Antwort.

Dann werde ich erstmal versuchen MVVM und DataBinding zu verstehen.

Wozu und in welchem Kontext willst Du das denn machen?
Sollen mehrere ComboBoxen erscheinen (Liste), wenn man öfter Klickt, oder ist das eher so eine an/aus-Sache, bei der es vielleicht auch einfach reicht die ComboBox ein/auszublenden?

Grüße Gimmick,

ja es sollen mehrere ComboBoxen erscheinen.
Ich möchte aus der Auswahl aus den ComboBoxen eine "Route" definieren.

Wenn die in irgendeiner Weise (horizontal, vertikal, ...) aufgelistet werden sollen, kannst Du z.B. das Control "ItemsControl" (einzelne Items kann man nicht auswählen) oder eine ListBox (einzelne Items kann man auswählen) ansehen.

Dafür schaust Du Dir dann wiederum den Hinweis auf das Databinding an und bindest die ItemsSource der Liste an ein passendes Collection Objekt (List, ObservableCollection,..) und verwendest als Template für die Darstellung innerhalb des Listen-Controls eine ComboBox.

Am Ende fügst Du also keine ComboBoxen in das GUI ein, sondern Du fügst Objekte in deine Liste ein und das Control stellt für jedes Objekt eine ComboBox dar. Wie Du dann die ComboBoxen befüllst, hängt u.A. davon ab, ob sich die Inhalte unterscheiden.

Da gibt es auch bei MS auf den Seiten der Controls Beispiele für.

MVVM mit Click ComboBox anzeigen

Hallo,

für dieses Ereignis musst du zuerst entscheiden ob du direkt in der Xaml.cs den Code hineinschreibst. Ich selbst richte mich immer nach dem Umfang der App. Hat die App nur eine einzige Funktion so würde ich pers. kein MVVM verwenden.

Du kannst eine ComboBox (System.Windows.Controls) direkt im Programm erstellen und z.B in einem Grid einbinden. Sieht wie folgt aus (Code Behind):


methode() {
ComboBox box = new ComboBox();
grid.Chrildren.Add(box);
box.SetValue(Grid.RowProperty, 1);
box.SetValue(Grid.ColumnProperty, 1);
}

Wenn du das mit MVVM machen möchtest lese dich in die Thematik etwas hinein. Ist am ANfang vlt. etwas kompliziert, in summe ist es aber leicht aber etwas mehr schreibarbeit, am ende wirst du es bei großen Apps nicht bereuen!

LG