Заполнить панель прямоугольниками - PullRequest
2 голосов
/ 10 июня 2010

Я хочу заполнить панель прямоугольниками, и когда размер панели будет изменен, прямоугольники также должны изменить размер.

Почему не работает следующее?

<Page
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <StackPanel HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
    <Rectangle Fill="Red" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
    <Rectangle Fill="Green" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
    <Rectangle Fill="Blue" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
  </StackPanel>
</Page>

Я бы предпочел не использовать Grid из-за боли при добавлении / удалении столбцов и перестановке детей. (Я с нетерпением ждал StackPanel, потому что, если я хотел добавить желтый Rectangle в начале, я просто заявляю об этом. Мне не нужно переупорядочивать остальные вручную.)

Ответы [ 2 ]

3 голосов
/ 10 июня 2010

Или UniformGrid:

<UniformGrid Columns="1">
    <Rectangle Fill="Red"/>
    <Rectangle Fill="Green"/>
    <Rectangle Fill="Blue"/>
</UniformGrid>
1 голос
/ 10 июня 2010

Вы используете StackPanel, чье поведение состоит в том, чтобы брать размер своих детей.Используйте Grid, который принимает весь доступный размер:

<Grid>
  <Grid.RowDefinitions>
    <RowDefinition Height="*" />
    <RowDefinition Height="*" />
    <RowDefinition Height="*" />
  </Grid.RowDefinitions>
  <Rectangle Fill="Red" Grid.Row="0" />
  <Rectangle Fill="Green" Grid.Row="1" />
  <Rectangle Fill="Blue" Grid.Row="2" />
</Grid>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...