WPF 如何设置列和行之间的 UniformGrid 间距
WPF How to set a UniformGrid spacing between colums and rows
是否可以在 UniformGrid
上设置特定的列和行间距?
UniformGrid
的默认行为是这样的:
<UniformGrid Columns="2" Rows="2">
<Button Content="1"/>
<Button Content="2"/>
<Button Content="3"/>
<Button Content="4"/>
</UniformGrid>
但我希望它看起来像这样:
不,不直接在UniformGrid
中,但你可以在其children中添加一个Margin
。如果多个children需要相同的间距,只需将它们提取到一个样式即可。对于您的示例,它看起来像这样:
<UniformGrid Columns="2" Rows="2">
<Button Content="1" Margin="0, 0, 10, 10"/>
<Button Content="2" Margin="10, 0, 0, 10"/>
<Button Content="3" Margin="0, 10, 10, 0"/>
<Button Content="4" Margin="10, 10, 0, 0"/>
</UniformGrid>
一般来说,如果您不想为每个控件定义样式,并且希望 child 控件的间距统一,您可以将它们嵌套在 Border
中,并为边距应用通用样式
<UniformGrid Rows="1" Columns="3">
<UniformGrid.Resources>
<Style x:Key="BorderSpacingStyle" TargetType="{x:Type Border}">
<Setter Property="Margin" Value="10"/>
</Style>
</UniformGrid.Resources>
<Border Style="{StaticResource BorderSpacingStyle}">
<Button Content="0"/>
</Border>
<Border Style="{StaticResource BorderSpacingStyle}">
<Button Content="1"/>
</Border>
<Border Style="{StaticResource BorderSpacingStyle}">
<Button Content="2"/>
</Border>
</UniformGrid>
是否可以在 UniformGrid
上设置特定的列和行间距?
UniformGrid
的默认行为是这样的:
<UniformGrid Columns="2" Rows="2">
<Button Content="1"/>
<Button Content="2"/>
<Button Content="3"/>
<Button Content="4"/>
</UniformGrid>
但我希望它看起来像这样:
不,不直接在UniformGrid
中,但你可以在其children中添加一个Margin
。如果多个children需要相同的间距,只需将它们提取到一个样式即可。对于您的示例,它看起来像这样:
<UniformGrid Columns="2" Rows="2">
<Button Content="1" Margin="0, 0, 10, 10"/>
<Button Content="2" Margin="10, 0, 0, 10"/>
<Button Content="3" Margin="0, 10, 10, 0"/>
<Button Content="4" Margin="10, 10, 0, 0"/>
</UniformGrid>
一般来说,如果您不想为每个控件定义样式,并且希望 child 控件的间距统一,您可以将它们嵌套在 Border
中,并为边距应用通用样式
<UniformGrid Rows="1" Columns="3">
<UniformGrid.Resources>
<Style x:Key="BorderSpacingStyle" TargetType="{x:Type Border}">
<Setter Property="Margin" Value="10"/>
</Style>
</UniformGrid.Resources>
<Border Style="{StaticResource BorderSpacingStyle}">
<Button Content="0"/>
</Border>
<Border Style="{StaticResource BorderSpacingStyle}">
<Button Content="1"/>
</Border>
<Border Style="{StaticResource BorderSpacingStyle}">
<Button Content="2"/>
</Border>
</UniformGrid>