我有一个网格,托管一个托盘列表框的堆栈面板 . 从itemssource填充的Listbox延伸到stackpanel的可见区域之外 . 我已经尝试限制网格和堆栈面板的大小,并且列表框继续延伸到可见范围之外(它只是走到边缘并继续,好像没有任何东西可以阻止它而不是限制它的大小并调出垂直滚动条) . 唯一似乎有帮助的是在列表框中设置MaxHeight,问题是我无法分辨出不同客户端的高度应该是多少 . 我尝试了不同的VerticalAlignments,我将底部边距设置为5,试图让它停在边缘,但还没有任何效果 .
剪辑:编辑以添加完整层次结构:
<UserControl>
<Grid x:Name="LayoutRoot" Background="White" Margin="0,0,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition MinWidth="230"/>
<ColumnDefinition d:DesignWidth="500"/>
<ColumnDefinition MinWidth="300" />
</Grid.ColumnDefinitions>
<StackPanel x:Name="ContentHolder" Grid.Column="0" DataContext="{Binding}" VerticalAlignment="Top">
<ListBox Name="lst" ItemsSource="{Binding}" Margin="5,0,15,5" VerticalAlignment="Stretch">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}" />
<TextBlock Text="{Binding Number}" Margin="15,0,0,0" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</StackPanel>
</grid>
</usercontrol>
我已从代码中删除了大部分名称等,只是以此为例 .
1 回答
为任何困惑和寻找未来答案的人回答这个问题 . 基本上,stackpanels步骤到垂直方向不会垂直限制其子控件的大小,因此任何带滚动条(datagrid,listbox等)的东西都可能不应该与它们一起使用 .