myCSharp.de - DIE C# und .NET Community (https://www.mycsharp.de/wbb2/index.php)
- Entwicklung (https://www.mycsharp.de/wbb2/board.php?boardid=3)
-- GUI: WPF und XAML (https://www.mycsharp.de/wbb2/board.php?boardid=85)
--- [C#|WPF] Label und Texbox auf eine Zeile mit Grid und Stackpanel (https://www.mycsharp.de/wbb2/thread.php?threadid=122261)


Geschrieben von Trite am 10.10.2019 um 14:39:
  [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)

XML-Code:
        <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>


Geschrieben von Th69 am 11.10.2019 um 10:16:
 
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.


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 18.02.2020 11:31