FluidMoveBehavior
顾名思义,这个行为的作为是为控件带来平滑移动的效果。具体来说,它可以被添加到一个 Panel 控件(比如 StackPanel 等)上,进而在它内部的子控件发生位置变化时,提供平滑的过渡效果。它有几个常用属性:
Duration:指定动画的持续时间(默认 1 秒)AppliedTo:动效的目标,可以是Children(子控件)或Self(自己,默认)
我们可以通过一个简单的例子观察它的效果。在下面的例子中,我们使用了用于移除自身的 RemoveElementAction 动作。
我们当然也可以将它用在诸如 ListBox 这样的控件上,从而实现添加或删除子项目时发生漂亮的移动效果(尤其是在遵循 MVVM 模式时)。但需要注意的是,这个行为默认只能被添加到 Panel 控件上,因此如果直接添加到 ListBox 上,它将不会起作用。要使其生效,我们需要将其添加到 ListBox.ItemsPanel 中。
注意:FluidMoveBehavior 需要在 ItemsPanelTemplate 中使用,而不是直接添加到 ListBox 上。
上面只是一个简单的例子。请注意,上面的方式将会破坏 ListBox 的虚拟化特性,因此在实际应用中,如果我们需要在 ListBox 中使用虚拟化,可以考虑使用 VirtualizingStackPanel 作为 ItemsPanelTemplate。