无法在包含扩展器和 ItemsControl WPF 的 ListView 中滚动

Cant scroll an ListView that contains an Expander and an ItemControl WPF

所以我正在尝试为家庭制作一个购物清单小应用程序,但我无法弄清楚我做错了什么。当您展开扩展器时,当我有一个项目列表从屏幕上消失时,ListBox 不允许我滚动。

密码是:

<StackPanel>
        <ListView Name="ListView" ItemsSource="{Binding}" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
            <ListView.ContextMenu>
                <ContextMenu>
                    <MenuItem Header="Add" Click="AddClick" />
                    <MenuItem Header="Edit" Click="EditClick" />
                    <MenuItem Header="Delete" Click="DeleteClick" />
                </ContextMenu>
            </ListView.ContextMenu>
            <ListView.ItemTemplate>
                <DataTemplate>
                    <Expander Header="{Binding Name, Mode=TwoWay}">
                        <ItemsControl ItemsSource="{Binding Ingredients, Mode=TwoWay}" IsEnabled="False">
                            <ItemsControl.ItemTemplate>
                                <DataTemplate>
                                    <template:IngredientsTemplate IsEnabled="False"/>
                                </DataTemplate>
                            </ItemsControl.ItemTemplate>
                        </ItemsControl>
                    </Expander>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </StackPanel>

如有任何帮助或建议,我们将不胜感激!!!

问题出在父 StackPanel 上。 WPF 布局控件的工作方式是首先查询其子级以确定需要多少 space,然后应用布局逻辑,然后告诉每个子级他们实际分配了多少 space。在 StackPanel 询问 ListView 需要多少 space 的布局过程中,ListView 响应所有 space 它需要显示它拥有的所有元素,因此 StackPanel 设置自己的大小包含所有需要的 space.

要解决此问题,您必须将 StackPanel 替换为 Grid(例如)之类的东西 and/or 重新考虑您的布局方式。