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.