Простая (я думаю) горизонтальная линия в WPF?


228

Создаем относительно простую форму ввода данных и просто хотим разделить определенные разделы горизонтальной линией (не похожей на тег HR в HTML), которая растягивает всю длину формы.

Я пробовал это:

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

Поскольку родительский элемент управления не имеет фиксированной ширины, эта строка заставляет окно растягиваться на всю ширину экрана.

Есть ли простой способ сделать это без фиксирования ширины моего родительского элемента управления / окна?


3
Ответ [здесь] [1]. Я предпочитаю ответ Mletterle. [1]: stackoverflow.com/questions/4011571/…
Stacked

Ответы:


522

Как насчет добавить это в ваш xaml:

<Separator/>

9
блестящее решение и один тег!

7
Я не понимаю, как это решение. Я добавляю разделитель и не вижу ни одной строки. Какая конфигурация необходима при размещении разделителя на стандартной панели макета, такой как Grid, чтобы он отображался как горизонтальное правило?
jpierson

Я согласен, похоже, что это не работает для некоторых элементов управления
Джастин Пихони

12
@jpierson Если вы добавите его в сетку, вам, вероятно, нужно назначить его для строки и столбца, как для любого другого элемента управления. В противном случае он, вероятно, появится в первом ряду / столбце, и вы его пропустите. (Он работает правильно на StackPanel.)
ANEves

5
Обратите внимание, что <Separator/>программа чтения с экрана будет читать вслух. Если <Separator/>используется для фактического разделения групп элементов в пользовательском интерфейсе, это идеальное решение. Там, где использование линии имеет чисто эстетические причины, я бы предложил использовать <Line/>или <Rectangle/>вместо.
Симон Розман,

77

У меня была та же проблема, и я решил использовать элемент Rectangle:

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

На мой взгляд, его легче изменить / изменить, чем разделитель. Конечно Separator, это очень простое и аккуратное решение для простого разделения :)


2
Работает в Silverlight 5, тогда как Seperatorнет.
ΩmegaMan

14

Используйте границу высоты 1 и не устанавливайте ширину (т. Е. Ширина = авто, горизонтальное выравнивание = растяжение, по умолчанию)


2
В любом случае это удобно для вертикальных сепараторов:<Border Width="1" Margin="2" Background="#8888"/>
Qwertie

8

Для всех, кто борется с этим: комментарий Qwertie работал хорошо для меня.

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

Это создает вертикальный разделитель, который вы можете увеличить в соответствии с вашими потребностями.


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>
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.