无法滚动包含扩展器和项控件 WPF 的列表视图



所以我试图为家人制作一个小购物清单应用程序,但我无法弄清楚我做错了什么。当我有一个项目列表,当您展开展开器时,该列表离开屏幕,则列表框不允许我滚动。

该准则是:

<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 布局控件的工作原理是,首先查询其子项以确定需要多少空间,然后应用布局逻辑,然后告知每个子项实际分配了多少空间。在布局过程中,StackPanel 会询问 ListView 它想要多少空间,ListView 会用显示它拥有的所有元素所需的所有空间来响应该空间,因此 StackPanel 会设置自己的大小以包含所有需要的空间。

要解决这个问题,你将不得不用网格之类的东西替换那个StackPanel和/或重新考虑你如何做你的布局。

最新更新