Граница между ячейками в WPF UniformGrid

81
11

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


Я попробовал googling, возможно, не используя правильные условия.

спросил(а) 2011-10-04T00:56:00+04:00 8 лет, 11 месяцев назад
1
Решение
81

Вы сказали, что пытались установить Margin на 1, что дает вам всего 2 пикселя вокруг каждого элемента.


Итак, разрежьте его пополам; вместо этого установите поля своих позиций на 0,5. Вы также захотите добавить Margin of 0.5 в UniformGrid, поэтому все заканчивается на границах пикселей.

(В крайнем левом столбце элементов будет левое поле UniformGrid, равное 0,5 пикселям, плюс поле с позицией 0.5 пикселя, в общей сложности 1 пиксель. Затем между этим первым столбцом и следующим столбцом вы получите первый столбец с 0,5-кратным правым краем, плюс следующий столбец с 0,5-кратным левым краем, так что еще раз у вас есть 1 пиксель между столбцами. Это хорошо работает.)

ответил(а) 2011-10-04T01:55:00+04:00 8 лет, 11 месяцев назад
70

Вариант 1: панель Grid с свойством ShowGridLines, но есть только пунктирные линии.


Вариант 2: DataGrid с GridLinesVisibility=DataGridGridLinesVisibility.All. Здесь вы можете указать различные кисти линии с помощью VerticalGridLinesBrush и HorizontalGridLinesBrush

Вариант 3: Собственная панель


Я считаю, что есть больше вариантов, но я знаю только тех, кого я перечислил.

ответил(а) 2011-10-04T01:25:00+04:00 8 лет, 11 месяцев назад
57

Здесь только разметка, вы можете создать ширину DP-границы и привязать к ней, просто дайте нам крик, если вам нужна помощь:


<Window x:Class="Margins.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:s="clr-namespace:System;assembly=mscorlib"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Border Background="Green" Padding="0,0,10,0" HorizontalAlignment="Center" VerticalAlignment="Center">
<StackPanel Orientation="Horizontal">
<Rectangle Fill="White" Width="100" Height="100" Margin="10,10,0,10"/>
<Rectangle Fill="White" Width="100" Height="100" Margin="10,10,0,10" />
<Rectangle Fill="White" Width="100" Height="100" Margin="10,10,0,10" />
<Rectangle Fill="White" Width="100" Height="100" Margin="10,10,0,10" />
</StackPanel>
</Border>
</Grid>
</Window>

ответил(а) 2011-10-04T01:21:00+04:00 8 лет, 11 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема