Silverlight - Вопрос по макету - PullRequest
1 голос
/ 16 февраля 2010

Я создаю приложение Silverlight, которое должно занимать ширину экрана пользователя.Это приложение имеет горизонтальный ряд, который приветствует пользователя.Затем две колонки под ним.Правый столбец всегда имеет фиксированный размер.Я хочу, чтобы левый столбец занимал все оставшееся пространство.В попытке сделать это я использую следующий XAML:

<Grid x:Name="layoutRoot" Background="White">
  <Grid.RowDefinitions>
    <RowDefinition Height="Auto" />
    <RowDefinition />
  </Grid.RowDefinitions>

  <Grid x:Name="greetingGrid" Margin="0,0,0,8">            
    <Grid.RowDefinitions>
      <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>

    <StackPanel Orientation="Horizontal">
      <TextBlock Text="Welcome " />
      <TextBlock x:Name="usernameTextBlock" />
    </StackPanel>            
  </Grid>    

  <Grid x:Name="contentGrid" Grid.Row="1">            
    <Grid.ColumnDefinitions>
      <ColumnDefinition />
      <ColumnDefinition />
    </Grid.ColumnDefinitions>

    <Grid x:Name="leftGrid" HorizontalAlignment="Stretch">
      <Border x:Name="leftBorder" BorderBrush="Black" Height="250">
        <!-- Insert Wrap Panel of Images --!>
      </Border>
    </Grid>

    <Grid x:Name="rightGrid" Width="100" Grid.Column="1" HorizontalAlignment="Right" Margin="8,0,0,0">
      <Border BorderBrush="Black" BorderThickness="2">
        <StackPanel Orientation="Vertical">
      <TextBlock Text="How would you like to view the images?" />
      <ComboBox x:Name="optionComboBox">
        <ComboBoxItem Content="Name" />
        <ComboBoxItem Content="Date" />
      </ComboBox>
        </StackPanel>
      </Border>
    </Grid>
  </Grid>
</Grid>

Как ни странно, два нижних столбца разделены по размеру.Как заставить левый столбец занять все оставшееся пространство?

Спасибо!

Ответы [ 2 ]

4 голосов
/ 16 февраля 2010
<Grid.ColumnDefinitions>
  <ColumnDefinition width="*" />
  <ColumnDefinition width="250"/>
</Grid.ColumnDefinitions>

Используйте * для столбца сетки, чтобы занять оставшееся свободное место.Имейте в виду, что родительский контейнер также должен занимать всю область, чтобы он работал!

0 голосов
/ 16 февраля 2010

Вы можете указать ширину столбцов, а не в своей "правой сетке", например:

    <Grid x:Name="greetingGrid" Margin="0,0,0,8">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
        </Grid.RowDefinitions>

        <StackPanel Orientation="Horizontal">
            <TextBlock Text="Welcome " />
            <TextBlock x:Name="usernameTextBlock" />
        </StackPanel>
    </Grid>

    <Grid x:Name="contentGrid" Grid.Row="1">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="100px" />
        </Grid.ColumnDefinitions>

        <Grid x:Name="leftGrid" HorizontalAlignment="Stretch" Background="Fuchsia">
            <Border x:Name="leftBorder" BorderBrush="Black" Height="250">

  </Border>
</Grid>

<Grid x:Name="rightGrid"  Grid.Column="1" HorizontalAlignment="Right" Margin="8,0,0,0">
  <Border BorderBrush="Black" BorderThickness="2">
    <StackPanel Orientation="Vertical">
  <TextBlock Text="How would you like to view the images?" />
  <ComboBox x:Name="optionComboBox">
    <ComboBoxItem Content="Name" />
    <ComboBoxItem Content="Date" />
  </ComboBox>
    </StackPanel>
  </Border>
</Grid>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...