WPF Как установить интервал UniformGrid между столбцами и строками - PullRequest
0 голосов
/ 05 августа 2020

Можно ли установить определенный c интервал между столбцами и строками на UniformGrid?

поведение UniformGrid по умолчанию:

<UniformGrid Columns="2" Rows="2">
    <Button Content="1"/>
    <Button Content="2"/>
    <Button Content="3"/>
    <Button Content="4"/>
</UniformGrid>

нормальный

Но я бы хотел, чтобы это выглядело так:

что я хочу

1 Ответ

1 голос
/ 05 августа 2020

Нет, не непосредственно в UniformGrid, но вы можете добавить Margin к его дочерним элементам. Если вам нужен одинаковый интервал для нескольких дочерних элементов, просто извлеките их в стиль. В вашем примере это будет выглядеть так:

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

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

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