WPF UniformGrid中单元格之间的边界

本文关键字:边界 之间 单元格 UniformGrid WPF | 更新日期: 2023-09-27 18:10:31

我是WPF的新手,并试图在UniformGrid元素之间添加1像素的边界或空间。我该怎么做呢?我尝试为每个子元素添加一个Margin,但这会在中间的单元格之间创建两个像素的边界。我可以在顶部和左侧添加边距,但这会使底部和右侧的单元格没有外部边距。

我试着用谷歌搜索,可能没有使用正确的术语。

WPF UniformGrid中单元格之间的边界

您说您尝试将Margin设置为1,这样每个元素周围总共有2个像素

所以把它切成两半;将项目的页边距设置为0.5。您还需要为UniformGrid本身添加0.5的Margin,以便所有内容最终排列在像素边界上。

(项目的最左边列将具有UniformGrid的0.5像素左边距,加上项目的0.5像素边距,总共为1像素。)然后在第一列和下一列之间,你会有第一列的0.5像素右边距,加上下一列的0.5像素左边距,所以你再一次在列之间有1像素的总和。

选项1:具有ShowGridLines属性的Grid面板,但只有虚线。

选项2:DataGrid + GridLinesVisibility=DataGridGridLinesVisibility.All。这里你可以用VerticalGridLinesBrushHorizontalGridLinesBrush来指定不同的线刷

选项3:自己的面板

我相信还有更多的选择,但我只知道我列出的那些。

这是唯一的标记解决方案,您可以创建一个DP - Border宽度并绑定到它,如果您需要帮助,请告诉我们:

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