【发布时间】:2016-09-02 08:45:15
【问题描述】:
我有一个 GroupBox(包含一个 ListBox)和一个 Expander,每个都在 Grid 中各自的行中:
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<GroupBox Grid.Row="0" Header="My List">
<ListBox>
...
</ListBox>
</GroupBox>
<Expander Grid.Row="1" ScrollViewer.CanContentScroll="True">
<Expander.Header>
<TextBlock FontWeight="Bold">My Expander</TextBlock>
</Expander.Header>
<StackPanel Margin="5 5 5 5">
<TextBlock TextWrapping="Wrap">
Lots<LineBreak />
and<LineBreak />
lots<LineBreak />
of<LineBreak />
lines.
</TextBlock>
<TextBlock TextWrapping="Wrap">
More <Run FontFamiliy="Courier">Stuff</Run> here.
</TextBlock>
</StackPanel>
</Expander>
<Grid>
想要的行为:
我希望 GroupBox(带有 ListBox)使用由父级(例如,父级是 Window)定义的 Grid 的所有可用空间减去(关闭的)Expander 的大小。如果用户打开 Expander,它应该让 GroupBox 收缩(甚至完全折叠)并为 Expander 留出空间。
但是,我想将 Expander 的高度限制为允许 Grid 展开而不会导致溢出的最大可用高度。如果 Expander 的高度因此受到限制,它应该开始显示一个垂直滚动条。
当前行为:
使用我当前的 XAML 代码,Expander 将使 Grid 溢出,即它会扩展超出可用空间(因此也不会显示垂直滚动条。)
简而言之:
如何设置 Grid 以将 Expander 的高度限制为 Grid 的最大可用高度?
【问题讨论】: