因此,我正在尝试为家庭制作一个小的购物清单应用程序,但是我无法弄清楚自己在做什么错。当我有一个在展开扩展器时不显示在屏幕上的项目列表时,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布局控件的工作方式是首先查询其子级以确定需要多少空间,然后应用布局逻辑,然后告诉每个子级实际分配了多少空间。在布局过程中,StackPanel询问ListView想要多少空间,ListView响应它所需的所有空间以显示其拥有的所有元素,因此StackPanel设置其自己的大小以包含所有所需的空间。
要解决此问题,您将不得不用诸如Grid之类的东西替换StackPanel,并/或重新考虑如何进行布局。