Я хочу добавить вертикальный разделитель к сетке, но могу найти только горизонтальный. Нет ли свойства, куда вы можете указать, должна ли линия разделителя быть горизонтальной или вертикальной?
Я много искал, но не нашел простого и легкого решения этой проблемы.
Я использую .Net Framework 4.0 и Visual Studio Ultimate 2012.
Если я попытаюсь повернуть горизонтальный разделитель на 90 градусов, он потеряет способность «стыковаться» с другими компонентами.
Повернутый разделитель выглядит так:
<Separator HorizontalAlignment="Left" Height="100" Margin="264,26,0,0" VerticalAlignment="Top" Width="100" RenderTransformOrigin="0.5,0.5">
<Separator.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform Angle="90"/>
<TranslateTransform/>
</TransformGroup>
</Separator.RenderTransform>
</Separator>
wpf
xaml
visual-studio-2012
separator
Мартин Вебер
источник
источник
Rectangle
?Border
тоже может быть решением ..Ответы:
Это должно делать именно то, что хотел автор:
если вам нужен горизонтальный разделитель, измените
Orientation
значениеStackPanel
наVertical
.источник
RenderTransform
. Аккуратный ярлык, чтобы запомнить :)Menu
междуMenuItem
s. Всегда красиво растягивается, чтобы соответствовать высоте / ширине меню.Это не совсем то, о чем просил автор, но все же это очень просто и работает именно так, как ожидалось.
Rectangle выполняет свою работу:
источник
<Rectangle HorizontalAlignment="Stretch" Height="3" Margin="-1,6" Stroke="Black" Fill="White" />
В прошлом я использовал стиль, найденный здесь
Вам нужно установить преобразование
LayoutTransform
вместо того,RenderTransform
чтобы преобразование происходило во время этапа макета, а не во время этапа рендеринга. Этап макета происходит, когда WPF пытается разметить элементы управления и выяснить, сколько места занимает каждый элемент управления, а этап рендеринга происходит после этапа макета, когда WPF пытается визуализировать элементы управления.Вы можете узнать больше о разнице между
LayoutTransform
иRenderTransform
здесь или здесьисточник
DockPanel
, вы должны иметь возможность установитьDockPanel.Dock
на своюSeparator
сторону, к которой вы хотите, чтобы он пристыковался. В WPF панель, на которой размещается элемент управления, обычно определяет его положение, а иногда и размер по умолчанию. Если вы новичок в макетах WPF, я бы порекомендовал прочитать эту статью: Макеты WPF - Быстрый визуальный стартМне нравится использовать элемент управления «Линия». Это дает вам точный контроль над тем, где начинается и где заканчивается разделитель. Хотя это не совсем разделитель, он работает точно так же, особенно в StackPanel.
Линия управления также работает в сетке. Я предпочитаю использовать StackPanel, потому что вам не нужно беспокоиться о наложении различных элементов управления.
X1 = x начальная позиция (для вертикальной линии должно быть 0)
X2 = x конечная позиция (X1 = X2 для вертикальной линии)
Y1 = начальная позиция y (для вертикальной линии должно быть 0)
Y2 = конечная позиция y (Y2 = желаемая высота строки)
Я использую "маржу", чтобы добавить отступ с любой стороны вертикальной линии. В этом случае 5 пикселей слева и 10 пикселей справа от вертикальной линии.
Поскольку элемент управления линиями позволяет вам выбирать координаты x и y начала и конца линии, вы также можете использовать его для горизонтальных линий и линий под любым углом между ними.
источник
Это очень простой способ сделать это без каких-либо функций и визуальных эффектов,
Используйте сетку и просто настройте ее.
Просто еще один способ сделать это.
источник
<Grid HorizontalAlignment="Stretch" Height="1" Margin="0,10" Background="Black"/>
Вертикальный разделитель
горизонтальный разделитель
источник
Из http://social.msdn.microsoft.com/Forums/vstudio/en-US/12ead5d4-1d57-4dbb-ba81-bc13084ba370/how-can-i-add-a-line-as-a-visual-separator -to-the-content-control-like-grid? forum = wpf :
Попробуйте этот пример и посмотрите, соответствует ли он вашим потребностям, в нем есть три основных аспекта.
Line.Stretch настроен на заливку.
Для горизонтальных линий VerticalAlignment линии установлен Bottom, а для VerticalLines HorizontalAlignment установлен на Right.
Затем нам нужно указать строке, сколько строк или столбцов нужно охватить, это делается путем привязки к свойству RowDefinitions или ColumnDefintions count.
источник
использовать
источник
Вот как я это сделал:
источник