Как сделать так, чтобы элементы Border имели одинаковую ширину внутри одного элемента Grid? - PullRequest
0 голосов
/ 16 ноября 2011

У меня есть что-то вроде этого:

<MyView>  
    <Style TargetType="Border" x:Key="Module">
      <Setter Property="BorderThickness" Value="1" />
      <Setter Property="BorderBrush" Value="Gray" />
      <Setter Property="Padding" Value="10" />
      <Setter Property="Margin" Value="10" />
    </Style>    
    <Grid>
      <Grid.ColumnDefinitions>        
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition Width="*" />
      </Grid.ColumnDefinitions>
      <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
      </Grid.RowDefinitions>
      <Border Name="Border1" Style="{StaticResource Module}">
        <!--some controls with non-fixed width-->
      </Border>
      <Border Grid.Row="1" Name="Border2" Style="{StaticResource Module}">
        <!--some controls with non-fixed width-->
      </Border>
      <Border Grid.Column="1" Grid.RowSpan="2" Style="{StaticResource Module}" Name="Border3">
        <!--some controls with non-fixed width-->
      </Border>
    </Grid>
</MyView>

Элементы управления внутри Border1 и Border2 могут иметь разную ширину, поэтому их границы также будут иметь разную ширину, что выглядит не очень хорошо. Как заставить границу Border1 и Border2 иметь одинаковую ширину, чтобы она выглядела лучше?

Решение установки одинаковой ширины вручную не учитывается, поскольку ширина дочерних элементов управления Border1 и Border2 может варьироваться.

А содержимое Border3 просто пожирает все доступное пространство, и это нормально.

1 Ответ

1 голос
/ 16 ноября 2011

Добавьте <Setter Property="HorizontalAlignment" Value="Stretch" /> к вашему стилю границы

...