[C#] WPF의 그리드에 테두리를 어떻게 배치합니까?

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 ...



답변

바깥 쪽 테두리 만 원하는 경우 가장 쉬운 방법은 테두리 컨트롤에 넣는 것입니다.

<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>

이것은 당신이 추구하는 것을 얻을 것입니다 (단지 2가 아닌 4면 모두에 여백을두기를 원할 수도 있지만 …)


답변

경계 컨트롤에 그리드를 중첩하는 경우

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

원하는 작업을 수행하지 않는 경우 원하는 작업을 수행하는 그리드 (또는 테두리)에 대한 고유 한 컨트롤 템플릿을 만들어야합니다.


답변

문제는 여백이 그리드가 아닌 테두리 태그에 지정되어야한다는 것입니다.


답변

이것은 나중에 누구에게나 유용 할 수 있다면 나를 위해 작동하는 나중 답변입니다. 그리드의 네면 모두에 간단한 테두리를 원했고 이렇게 달성했습니다.

<DataGrid x:Name="dgDisplay" Margin="5" BorderBrush="#1266a7" BorderThickness="1"...


답변

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

이 코드는 “innerGrid”내부에 테두리를 감 쌉니다.


답변

누군가 비슷한 문제에 관심이 있지만 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);


답변