0

当我的窗口展开时,我无法让我的 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>

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

<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 的高度。有什么我想念的吗?

4

1 回答 1

2

这里至少有两个方面在起作用:

第一个是当您在 an 中有项目时ItemsControl,每个项目实际上都在 anItemContainer中,因此它是您要拉伸的容器。

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

第二个考虑因素是ItemsPanelTemplate,它决定将项目放置到哪种类型的面板中。中的项目ItemsControl填充可用空间的能力将取决于容器的类型和ItemContainer. 例如,如果您将 aStackPanel用于ItemsPanelTemplate,它不会填满可用空间,因为它会StackPanel根据其内容增长和缩小。ADockPanel可能会起作用,但只有最后一个孩子会长大以填充可用空间。也许UniformGrid可以做到这一点。

于 2012-10-16T13:47:29.497 回答