Semplice (penso) linea orizzontale in WPF?


228

Creazione di un modulo di immissione dati relativamente semplice e desideri solo separare determinate sezioni con una linea orizzontale (non diversamente da un tag HR in HTML) che si estende per l'intera lunghezza del modulo.

Ho provato questo:

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

Poiché il controllo padre non è una larghezza fissa, questa riga provoca l'estensione della finestra all'intera larghezza dello schermo.

C'è un modo semplice per farlo senza fissare la larghezza del mio controllo / finestra del genitore?


3
La risposta è [qui] [1]. Preferisco la risposta di mletterle. [1]: stackoverflow.com/questions/4011571/…
pila il

Risposte:


522

Che ne dici di aggiungere questo al tuo xaml:

<Separator/>

9
soluzione geniale e un tag!

7
Non capisco come questa sia una soluzione. Aggiungo un separatore e non vedo alcuna riga. Quale configurazione è necessaria quando si posiziona il separatore all'interno di un pannello di layout standard come una griglia per farlo apparire come una regola orizzontale?
jpierson,

Sono d'accordo, sembra che questo non funzioni per alcuni controlli
Justin Pihony,

12
@jpierson Se lo aggiungi a una griglia, probabilmente dovrai assegnarlo a una riga e colonna come qualsiasi altro controllo. Altrimenti apparirà probabilmente nella prima riga / colonna e ti mancherà. (Funziona correttamente su StackPanel.)
ANeves

5
Si prega di notare che <Separator/>saranno letti ad alta voce dagli screen reader. Se <Separator/>viene utilizzato per separare effettivamente gruppi di elementi nell'interfaccia utente, questa è una soluzione perfetta. Laddove l'uso della linea abbia ragioni puramente estetiche, suggerirei di utilizzare <Line/>o <Rectangle/>invece.
Simon Rozman,

77

Ho avuto lo stesso problema e alla fine ho scelto di utilizzare un elemento Rectangle:

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

A mio avviso, è più semplice modificare / modellare un separatore. Ovviamente si Separatortratta di una soluzione molto semplice e accurata per separazioni semplici :)


2
Funziona in Silverlight 5 mentre Seperatorno.
ΩmegaMan

14

Utilizzare un bordo di altezza 1 e non impostare la larghezza (ovvero Larghezza = Auto, Orizzontale orizzontale = Allunga, impostazione predefinita)


2
È comunque utile per i separatori verticali:<Border Width="1" Margin="2" Background="#8888"/>
Qwertie,

8

Per chiunque altro alle prese con questo: il commento di Qwertie ha funzionato bene per me.

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

Questo crea un separatore verticale che è possibile per soddisfare le tue esigenze.


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>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.