UserControl在展开窗口时垂直展开

时间:2012-10-16 13:36:01

标签: wpf xaml user-interface

当我的窗口展开时,我无法让UserControl垂直展开。

我的UserControl当前位于ItemsControl中,通过在ItemsControl上设置VerticalAlignment =“Stretch”属性来正确伸展。

我将以下UserControl添加到ItemsControl:

<UserControl MinWidth="930">
     <Grid VerticalAlignment="Stretch" Background="Red">
          <Grid.ColumnDefinitions>
               <ColumnDefinition Width="200" />
               <ColumnDefinition Width="730*" />
          </Grid.ColumnDefinitions>
          <Grid.RowDefinitions>
               <RowDefinition Height="400" />
               <RowDefinition Height="*" />
          </Grid.RowDefinitions>

          <DockPanel Grid.Column="1" Grid.ColumnSpan="1" Grid.RowSpan="2" Grid.Row="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Background="Pink" LastChildFill="True">

              <ItemsControl Name="itemPanelOverview" Grid.Column="1" Background="Black" Margin="0"/>
         </DockPanel>
     </Grid>
</UserControl>

在TabControl内的ItemsControl中调用UserControl,如下所示:

<TabItem>
     <TabItem.Header>
          HEADER EG
     </TabItem.Header>

     <ItemsControl Name="contentItems" Grid.ColumnSpan="2" Grid.Column="1" Grid.Row="1" VerticalAlignment="Stretch" Background="Blue">
          <Grid Height="35" Background="{DynamicResource GrayMenuGradient}" >
               <Image Source="..." Stretch="None" />
               <TextBlock Text="{Binding WelcomeMessage}" />
          </Grid>
    </ItemsControl>
</TabItem>

看来ItemsControl(contentItems)正如预期的那样伸展,因为我可以看到蓝色背景正确拉伸。

我没有为行定义以外的任何地方设置此UserControl的高度。有什么我想念的吗?

1 个答案:

答案 0 :(得分:2)

这里至少有两个方面:

首先,当您在ItemsControl中有项目时,每个项目实际上位于ItemContainer内,因此它是您要拉伸的容器。

您可以为ItemContainerTemplate ItemsControl声明ItemsPanelTemplate来设计容器:http://msdn.microsoft.com/en-us/library/system.windows.controls.itemcontainertemplate.aspx

第二个考虑因素是ItemsControl,它决定了物品的放置类型。 ItemContainer中的项目填充可用空间的能力将取决于容器的类型和StackPanel的类型。例如,如果对ItemsPanelTemplate使用StackPanel,则不会填满可用空间,因为DockPanel会根据其内容增长和缩小。 UniformGrid可能会起作用,但只有最后一个孩子会增长以填充可用空间。也许{{1}}可以做到这一点。