Проблема WPF: нужно нарисовать элемент управления поверх другого - PullRequest
4 голосов
/ 24 марта 2009

У меня есть окно оболочки, построенное из верхнего, основного содержимого и нижнего колонтитула Основным содержанием является вкладка управления. В соответствии с проектом, один из элементов вкладок (пользовательский элемент управления) должен немного расширяться по нижнему колонтитулу. Сначала я думал о том, чтобы сделать это с отрицательной маржой, но нижний колонтитул, независимо от того, что я делал, всегда рисовался поверх моего контента.

Например, рассмотрим следующий xaml:

<Grid>
  <Grid.RowDefinitions>
    <RowDefinition Height="33*"/>
    <RowDefinition Height="33*"/>
    <RowDefinition Height="33*"/>
  </Grid.RowDefinitions>
  <StackPanel Background="Blue" Grid.Row="0"/> <!-- Header -->
  <StackPanel Background="Red" Grid.Row="2"/>  <!-- Footer -->
  <TabControl Grid.Row="1"  > <!-- Content -->
    <TabItem>
      <Grid>
        <Grid.ColumnDefinitions>
          <ColumnDefinition Width="33*"/>
          <ColumnDefinition Width="33*"/>
          <ColumnDefinition Width="33*"/>
        </Grid.ColumnDefinitions>
        <StackPanel Grid.Column="1" Background="Yellow" >
          <Button Width="100" Height="50" Content="Text"  />
        </StackPanel>
      </Grid>
  </TabItem>
</TabControl>

Я бы хотел добиться того, чтобы желтая StackPanel каким-то образом достигла нижней части экрана, перекрывая верхний колонтитул красного цвета.

Надеюсь, это понятно. Спасибо Ariel

Ответы [ 3 ]

4 голосов
/ 24 марта 2009

Попробуйте этот пример кода:

<Grid>
  <Grid.RowDefinitions>
    <RowDefinition Height="33*"/>
    <RowDefinition Height="33*"/>
    <RowDefinition Height="33*"/>
  </Grid.RowDefinitions>
   <Grid.ColumnDefinitions>
     <ColumnDefinition Width="33*"/>
     <ColumnDefinition Width="33*"/>
     <ColumnDefinition Width="33*"/>
   </Grid.ColumnDefinitions>      
  <StackPanel Grid.ColumnSpan="3" Background="Blue" Grid.Row="0"/> <!-- Header -->
  <StackPanel Grid.ColumnSpan="3" Background="Red" Grid.Row="2"/>  <!-- Footer -->
  <TabControl Grid.ColumnSpan="3" Grid.Row="1"> <!-- Content -->
    <TabItem>
      <Grid>
          <Button Width="100" Grid.Column="1" Height="50" Content="Text"  />          
      </Grid>
    </TabItem>
  </TabControl>
    <StackPanel Grid.Column="1" Grid.Row="3" Background="Yellow" />
</Grid>
1 голос
/ 24 марта 2009

Нет сомнений, что проблема в TabControl. Может быть, попытаться написать свой собственный TabControl.

Приветствие.

1 голос
/ 24 марта 2009

Проблема в том, что вы хотите, чтобы панель стека содержалась в элементе управления вкладками, но вы хотите, чтобы она выходила за нижнюю часть элемента управления вкладками. Это не поддерживается элементом управления вкладкой.

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