Einfache (glaube ich) horizontale Linie in WPF?

228

Erstellen Sie ein relativ einfaches Dateneingabeformular und möchten Sie nur bestimmte Abschnitte durch eine horizontale Linie (ähnlich einem HR-Tag in HTML) trennen, die sich über die gesamte Länge des Formulars erstreckt.

Ich habe das versucht:

<Line Stretch="Fill" Stroke="Black" X2="1"/>

Da das übergeordnete Steuerelement keine feste Breite hat, wird das Fenster durch diese Linie auf die gesamte Bildschirmbreite ausgedehnt.

Gibt es eine einfache Möglichkeit, dies zu tun, ohne die Breite meines übergeordneten Steuerelements / Fensters festzulegen?

Phil Sandler
quelle
3
Die Antwort ist [hier] [1]. Ich bevorzuge die Antwort von mletterle. [1]: stackoverflow.com/questions/4011571/...
Stacked

Antworten:

522

Wie wäre es, wenn Sie dies zu Ihrem xaml hinzufügen:

<Separator/>
Adel Hazzah
quelle
9
geniale Lösung und ein Tag!
7
Ich verstehe nicht, wie das eine Lösung ist. Ich füge ein Trennzeichen hinzu und sehe keine Zeile. Welche Konfiguration ist erforderlich, wenn das Trennzeichen in einem Standardlayoutfenster wie einem Raster platziert wird, damit es wie eine horizontale Regel angezeigt wird?
Jpierson
Ich stimme zu, es scheint, dass dies für einige Kontrollen nicht funktioniert
Justin Pihony
12
@jpierson Wenn Sie es einem Raster hinzufügen, müssen Sie es wahrscheinlich wie jedes andere Steuerelement einer Zeile und Spalte zuweisen. Andernfalls wird es wahrscheinlich in der ersten Zeile / Spalte angezeigt und Sie werden es vermissen. (Es funktioniert ordnungsgemäß auf einem StackPanel.)
ANeves
5
Bitte beachten Sie, dass <Separator/>dies von Bildschirmlesern vorgelesen wird. Wenn <Separator/>es verwendet wird, um Gruppen von Elementen in der Benutzeroberfläche tatsächlich zu trennen, ist dies eine perfekte Lösung. Wenn die Verwendung von Linien rein ästhetische Gründe hat, würde ich die Verwendung von <Line/>oder <Rectangle/>stattdessen vorschlagen .
Simon Rozman
77

Ich hatte das gleiche Problem und entschied mich schließlich für die Verwendung eines Rechteckelements:

<Rectangle HorizontalAlignment="Stretch" Fill="Blue" Height="4"/>

Meiner Meinung nach ist es etwas einfacher zu modifizieren / formen als ein Trennzeichen. Natürlich Separatorist das eine sehr einfache und saubere Lösung für einfache Trennungen :)

Deruijter
quelle
2
Funktioniert in Silverlight 5, Seperatornicht jedoch.
ΩmegaMan
14

Verwenden Sie einen Rand der Höhe 1 und legen Sie die Breite nicht fest (dh Breite = Auto, HorizontalAlignment = Stretch, Standardeinstellung).

Ana Betts
quelle
2
Es ist sowieso praktisch für vertikale Trennzeichen:<Border Width="1" Margin="2" Background="#8888"/>
Qwertie
8

Für alle anderen, die damit zu kämpfen haben: Qwerties Kommentar hat für mich gut funktioniert.

<Border Width="1" Margin="2" Background="#8888"/>

Dadurch entsteht ein vertikaler Trenner, den Sie Ihren Bedürfnissen entsprechend anpassen können.

P_Fitz
quelle
3
To draw Horizontal 
************************    
<Rectangle  HorizontalAlignment="Stretch"  VerticalAlignment="Center" Fill="DarkCyan" Height="4"/>

To draw vertical 
*******************
 <Rectangle  HorizontalAlignment="Stretch" VerticalAlignment="Center" Fill="DarkCyan" Height="4" Width="Auto" >
        <Rectangle.RenderTransform>
            <TransformGroup>
                <ScaleTransform/>
                <SkewTransform/>
                <RotateTransform Angle="90"/>
                <TranslateTransform/>
            </TransformGroup>
        </Rectangle.RenderTransform>
    </Rectangle>
Shaiju Mathew
quelle