Laden...

[C#|WPF] Label und Texbox auf eine Zeile mit Grid und Stackpanel

Erstellt von Trite vor 4 Jahren Letzter Beitrag vor 4 Jahren 1.363 Views
T
Trite Themenstarter:in
1 Beiträge seit 2019
vor 4 Jahren
[C#|WPF] Label und Texbox auf eine Zeile mit Grid und Stackpanel

Moin,

ich bin zurzeit dabei meine UI aufzubauen für mein neues Projekt.
Dabei habe ich jetzt das Problem, dass ich mehrere Labels in einem Grid Row habe bei denen ich gerne jeweils eine Textbox hinzufügen möchte. Da ich meines Wissens her nur das Label und Textbox mit folgenden auf eine Zeile bekomme:

StackPanel: Orientation="Horizontal"
Label: VerticalAlignment="Center"
TextBox: VerticalContentAlignment="Center", VerticalAlignment="Center"

Weiß ich nicht genau, wie ich am besten jedes Label mit dem dazugehörigen Textbox auf eine eigene Zeile bekomme. Siehe Anhang - Bild.

Hier der Code (WICHTIG! Das Stackpanel befindet sich auch noch in einem Grid)

        <StackPanel Grid.Column="0" Grid.Row="2" Orientation="Horizontal">
            <Label x:Name="lbl_id" Content="ID" VerticalAlignment="Center" HorizontalAlignment="Left" Margin="10"/>
            <TextBox x:Name="txt_id" VerticalAlignment="Center" Width="111" Margin="0,95"/>
            
            <Label x:Name="lbl_kategorie" Content="Kategorie" HorizontalAlignment="Left" />
            <TextBox x:Name="txt_kateogorie" VerticalAlignment="Center" Width="111" Margin="0,95"/>
            
            <Label x:Name="lbl_beschreibung" Content="Beschreibung"  HorizontalAlignment="Left" Margin="10"/>
                <TextBox x:Name="txt_beschreibung" VerticalAlignment="Center" Width="111" Margin="0,95"/>
            </StackPanel>
4.931 Beiträge seit 2008
vor 4 Jahren

Möchtest du, ohne jedesmal wieder diese Eigenschaften explizit anzugeben, die Controls platzieren, dann könntest du ein eigenes UserControl dafür erstellen, s. z.B.
WPF Tutorial - Creating & using a UserControl
bzw. auf deutsch WPF Tutorial: Erzeugen und Verwendung eines UserControls
How to Create a WPF User Control & Use It in a WPF Application (C#)

Eine andere (und hierfür wahrscheinlich bessere) Möglichkeit ist die Erzeugung eines DataGridRow-Templates, s. z.B.
WPF DataGrid Custommization using Style and Template
Creating a ControlTemplate for a DataGridRow in WPF
DataGrid Styles and Templates (s. Beispiel für "<!--Style and template for the DataGridRow.-->")

Das ControlTemplate kannst du dabei beliebig aufbauen, auch z.B. ein StackPanel verwenden und dort dann die beiden Unterelemente erzeugen.

Edit: Ah, jetzt sehe ich erst was du genau meinst. Du hast bisher alle Elemente in einem StackPanel. Du solltest jeweils ein eigenes StackPanel je Label/TextBox verwenden.