Как мне поставить рамку на моей сетке в WPF? - PullRequest
106 голосов
/ 05 мая 2010

Как мне поставить границу на моей сетке в C # / WPF?

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

<Grid>
    <Border BorderBrush="Black" BorderThickness="2">
        <Grid Height="166" HorizontalAlignment="Left" Margin="12,12,0,0" Name="grid1" VerticalAlignment="Top" Width="479" Background="#FFF2F2F2" />
    </Border>
... and so on ...

Ответы [ 6 ]

189 голосов
/ 05 мая 2010

Если вы просто хотите получить внешнюю границу, проще всего поместить ее в элемент управления Border:

<Border BorderBrush="Black" BorderThickness="2">
    <Grid>
       <!-- Grid contents here -->
    </Grid>
</Border>

Причина, по которой вы видите, что граница полностью заполняет ваш элемент управления, заключается в том, что по умолчанию ее HorizontalAlignment и VerticalAlignment установлены на Stretch. Попробуйте следующее:

<Grid>
    <Border  HorizontalAlignment="Left" VerticalAlignment="Top"  BorderBrush="Black" BorderThickness="2">
        <Grid Height="166" HorizontalAlignment="Left" Margin="12,12,0,0" Name="grid1" VerticalAlignment="Top" Width="479" Background="#FFF2F2F2" />
    </Border>
</Grid>

Это должно дать вам то, что вы ищете (хотя вы можете поставить поле на всех 4 сторонах, а не только на 2 ...)

7 голосов
/ 05 мая 2010

Если вложить вашу сетку в пограничный контроль

<Border>
    <Grid>
    </Grid>
</Border>

не делает то, что вы хотите, тогда вам придется создать свой собственный шаблон управления для сетки (или границы), который делает то, что вы хотите.

1 голос
/ 16 мая 2018

Это более поздний ответ, который работает для меня, если он может пригодиться кому-либо в будущем. Я хотел простую границу вокруг всех четырех сторон сетки и добился этого примерно так ...

<DataGrid x:Name="dgDisplay" Margin="5" BorderBrush="#1266a7" BorderThickness="1"...
1 голос
/ 23 марта 2014
<Grid x:Name="outerGrid">
    <Grid x:Name="innerGrid">
        <Border BorderBrush="#FF179AC8" BorderThickness="2" />
        <other stuff></other stuff>
        <other stuff></other stuff>
    </Grid>
</Grid>

Этот код Обертывание границы внутри "innerGrid"

1 голос
/ 14 ноября 2013

Я думаю, что ваша проблема в том, что поле должно быть указано в теге border, а не в сетке.

0 голосов
/ 02 января 2019

Если кто-то заинтересован в подобной проблеме, но не работает с XAML, вот мое решение:

var B1 = new Border();
B1.BorderBrush = Brushes.Black;
B1.BorderThickness = new Thickness(0, 1, 0, 0); //You can specify here which borders do you want
YourPanel.Children.Add(B1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...