无法在包含扩展器和 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 重新考虑您的布局方式。
所以我正在尝试为家庭制作一个购物清单小应用程序,但我无法弄清楚我做错了什么。当您展开扩展器时,当我有一个项目列表从屏幕上消失时,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 重新考虑您的布局方式。