WPF ListBox未意识到其项目的大小已更改

WPF ListBox未意识到其项目的大小已更改,wpf,animation,user-controls,listbox,scrollbar,Wpf,Animation,User Controls,Listbox,Scrollbar,我有一个列表框,其中包含许多用户项,这些项是数据模板d,在列表框中显示为用户控件s。每个UserControl都可以扩展大小。首先,列表框足够大,可以将它们全部显示在未展开状态。我遇到的问题是,当许多UserControls一起展开时,它们会扩展到列表框的可见区域之外。列表框无法识别这一事实,即使设置为可见,也不会出现任何滚动条 我正在使用DoubleAnimations来更改UserControl高度,当用户单击每个按钮时。我是否必须做些什么,或者必须在列表框中设置一些设置,以使其注册表示其项

我有一个
列表框
,其中包含许多
用户
项,这些项是
数据模板
d,在
列表框
中显示为
用户控件
s。每个
UserControl
都可以扩展大小。首先,
列表框
足够大,可以将它们全部显示在未展开状态。我遇到的问题是,当许多
UserControl
s一起展开时,它们会扩展到
列表框的可见区域之外。
列表框
无法识别这一事实,即使设置为
可见
,也不会出现任何
滚动条

我正在使用
DoubleAnimation
s来更改
UserControl
高度,当用户单击每个按钮时。我是否必须做些什么,或者必须在
列表框中设置一些设置,以使其注册表示其项目的
用户控件的大小更改,并在需要时显示
滚动条
s

编辑>>>


我已经找到了一个自定义的
WrapPanel
,它是我在
列表框.ItemsPanel
中使用的。当我移除它,或者用标准的
WrapPanel
替换它时,
滚动条会在需要时出现。我从一篇关于的好文章中获得了
面板的代码。有人能看到文章中给出的代码中缺少了什么,以及为什么它可能会阻止
滚动条的显示吗?

我想知道列表框是否能正常完成您所期望的功能?如果您知道项目大小何时发生变化,您可以尝试调用列表框上的InvalidateMeasure/Layout,只是为了看看?

我决定再次完整地编写自定义
WrapPanel
代码,这次它工作正常!当将新版本与前一版本进行比较时,我可以看到测量计算中a+=中缺少a+,因此
面板
认为项目比实际小得多。。。因此没有滚动条


因此,如果您有此问题,请仔细检查您的测量代码。

是否正在设置高度动画?在这种情况下,我看不出您的
列表框没有理由不调整。你没有使用RenderTransform,是吗?我无法复制这个。您能为您的问题添加一些示例代码吗?我正在对自定义
WrapPanel
ArrangeOverride
方法中的
ui元素.renderTransferrom
属性的
子类
应用
TranslateTransform
。这有什么不同吗?我尝试向编辑按钮添加一个
点击
处理程序,并调用
listBox.Invalidate…()
listBox.UpdateLayout()
,但没有效果。更多信息,请参阅我更新的帖子。