列表框延伸到页面之外

时间:2010-11-30 17:14:30

标签: c# .net silverlight xaml listbox

我在silverlight应用程序的边框内部有一个堆栈面板的列表框,当我向列表框添加任何内容时,它的高度会增加,因此滚动条永远不会被使用,并且它会超出border元素的边界。我已经尝试明确设置列表框,边框和堆栈面板的高度属性,但它仍然超出了这个范围。

这是我的代码:

<Border x:Name="articlePane">
                <StackPanel>
                    <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Top">
                        <Button Content="Latest" MouseEnter="HandleRollInAnimation" MouseLeave="HandleRollOutAnimation" />
                        <Button Content="Pending" MouseEnter="HandleRollInAnimation" MouseLeave="HandleRollOutAnimation" />
                        <Button Content="Done" MouseEnter="HandleRollInAnimation" MouseLeave="HandleRollOutAnimation" />
                    </StackPanel>
                    <ListBox x:Name="articleList" Margin="5" Background="Transparent" ItemsSource="{Binding}" 
                             ScrollViewer.VerticalScrollBarVisibility="Visible">
                        <ListBox.ItemTemplate>
                            <DataTemplate>
                                <StackPanel Orientation="Vertical" VerticalAlignment="Top" HorizontalAlignment="Center">
                                    <Image x:Name="articleImage" />
                                    <TextBlock x:Name="articleTitle" Text="{Binding Path=Title}" FontSize="18" FontWeight="Bold"
                                               Margin="5"/>
                                    <TextBlock x:Name="articleDate" Text="{Binding Path=Date}" FontSize="14" Foreground="Gray"
                                               Margin="5"/>
                                </StackPanel>
                            </DataTemplate>
                        </ListBox.ItemTemplate>
                    </ListBox>
                </StackPanel>
            </Border>

1 个答案:

答案 0 :(得分:3)

我感觉StackPanel一直在不断增加高度。我认为在这种情况下,你最好使用边框内的网格布局。将Button StackPanel放在一个高度定义的行中,将ListBox放在autosizing * height行中。这样Grid就会坚持你的形式。