我有一个网格,托管一个托管列表框的堆栈面板。从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>
我已从代码中删除了大部分名称等,只是以此为例。
答案 0 :(得分:0)
回答这个问题让所有人感到困惑并在将来寻找答案。基本上,stackpanels步进到垂直方向不会垂直限制其子控件的大小,因此任何带滚动条(datagrid,listbox等)的东西都可能不应该与它们一起使用。