C# 如何在窗口中保留特定的xaml元素(这样它就不会从底部溢出)

C# 如何在窗口中保留特定的xaml元素(这样它就不会从底部溢出),c#,xaml,C#,Xaml,作为评估的一部分,我正在尝试制作一个简单的发票应用程序。我制作了一个包含所有请求项的列表框接口。但是,当我添加了太多的项目时,列表框就会从窗口底部流过,我必须调整窗口的大小以适应它 我尝试了dockpanel,并将stackpanel分配给网格本身。如果我设置了一个固定的高度,它似乎会像预期的那样工作 以下是列表框的xaml: <StackPanel Grid.Column="1" Grid.Row="0" ClipToBounds="True"> <L

作为评估的一部分,我正在尝试制作一个简单的发票应用程序。我制作了一个包含所有请求项的列表框接口。但是,当我添加了太多的项目时,列表框就会从窗口底部流过,我必须调整窗口的大小以适应它

我尝试了dockpanel,并将stackpanel分配给网格本身。如果我设置了一个固定的高度,它似乎会像预期的那样工作

以下是列表框的xaml:

    <StackPanel Grid.Column="1" Grid.Row="0" ClipToBounds="True">
        <ListBox Name="Shirts" HorizontalContentAlignment="Stretch" ScrollViewer.VerticalScrollBarVisibility="Visible" Margin="5" ClipToBounds="True">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <TextBlock>
                        <Run Text="{Binding ShirtSize}" />
                        <Run Text="{Binding ShirtStyle}" />
                        <Run Text="{Binding ShirtColour}" />
                    </TextBlock>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
        <Button Content="Print Invoice" Margin="5" ClipToBounds="True"/>
    </StackPanel>
我希望代码能像这样工作,它不是固定高度的,但它可以作为一个例子

它实际上是如何工作的。

使用DockPanel而不是StackPanel,它应该工作得更好。无论容器大小如何,StackPanel都会随着内容的增长而增长。DockPanel将考虑容器大小并填充可用空间。先按Dock=Bottom的顺序放置按钮,然后按Dock=Fill的顺序放置列表框。列表将在按钮上方排列,即使在按钮之后声明,哪个有点不直观

是我还是两个附加的图像相同?列表框和许多其他wpf控件将根据其内容尽可能调整自身大小,除非您设置其宽度和/或高度。要动态限制高度,可以将ListBox.height或MaxHeight绑定到其他元素的实际高度。