Как разместить границу в моей сетке в WPF?

Как разместить границу в моей сетке в С#/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 ...

Ответ 1

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

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

Edit:

Причина, по которой вы видите границу, полностью заполняет ваш контроль, заключается в том, что по умолчанию для параметра 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...)

Ответ 2

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

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

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

Ответ 3

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

            

Ответ 4

<Grid x:Name="outerGrid">
    <Grid x:Name="innerGrid">
        <Border BorderBrush="#FF179AC8" BorderThickness="2" />
        <other stuff></other stuff>
        <other stuff></other stuff>
    </Grid>
</Grid>

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