无法滚动一个包含扩展器和ItemControl WPF的ListView

问题描述 投票:0回答:1

因此,我正在尝试为家庭制作一个小的购物清单应用程序,但是我无法弄清楚自己在做什么错。当我有一个在展开扩展器时不显示在屏幕上的项目列表时,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>

任何帮助或建议将不胜感激!!

wpf listview scroll expander
1个回答
0
投票

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

要解决此问题,您将不得不用诸如Grid之类的东西替换StackPanel,并/或重新考虑如何进行布局。

© www.soinside.com 2019 - 2024. All rights reserved.