【发布时间】:2010-03-22 06:06:21
【问题描述】:
我有一个用于列表框的自定义面板
<ItemsPanelTemplate x:Key="FloatPanelTemplate">
<Controls:FloatPanel x:Name="CardPanel" />
</ItemsPanelTemplate>
面板使用其 X 和 Y 依赖属性来布置其子级。 当 FloatPanel 单独使用时,这一切都很好 - 我正在使用 FrameworkPropertyMetadataOptions.AffectsArrange | FrameworkPropertyMetadataOptions.AffectsMeasure 对子项的依赖属性进行测量,以告知 FloatPanel 重绘其布局。
当我在列表框(上面的代码)中使用它时,它第一次画得很好,但是当我拖动子项(修改项目的 X 和 Y)时,它没有通知列表框它需要重绘 FloatPanel 的孩子们。我认为这个问题与绑定集合中的每个项目都用 ListBoxItem 包装的事实有关。
希望我已经描述了我做得很好,有人可以告诉我如何让面板(或其子面板)告诉它需要再次执行布局例程。正如我所说,它工作一次(初始绘制),但随后拖动项目不起作用(列表框不知道其子项已更改并需要重新布局。)如果我拖动一个项目然后调整窗口大小,列表框会进行布局和这些项目被绘制在它们的新位置。
如何通知 ListBox(或更重要的是 ItemsPanelTemplate 中的 FloatPanel)它需要进行布局传递?
【问题讨论】:
标签: wpf wpf-controls