当我的窗口展开时,我无法让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的高度。有什么我想念的吗?
答案 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}}可以做到这一点。