使用FlexGrid > 分组 > C1FlexGridGroupPanel实现注意事项 |
我们决定将分组UI的功能提供在一个独立的程序集而不是将其直接添加在C1FlexGrid控件上,原因如下:
C1FlexGridGroupPanel实际上是一个Grid元素,包含一个用来显示水印消息的TextBlock,以及一个用来显示源ICollectionView中所有可用分组的水平放置的StackPanel。
分组由GroupMarker元素表示,该元素可以被单击对分组进行排序或者收起整个分组,再或者可以进行拖拽以重新排布分组的顺序。
C1FlexGridGroupPanel处理四种类型的拖拽行为:
前两种拖拽行为由GroupMarker类发起,将检测鼠标拖拽动作并调用DragDropManager上的DoDragDrop,同时传入Marker做为一个参数。后两种拖拽行为将在响应C1FlexGrid的DraggingColumn事件的事件处理函数中发起。
当DoDragDrop方法被调用时,DragDropManager将在整个页面显示一个透明的元素,捕获鼠标消息,并触发Dragging事件,使得调用方可以更新拖放的目标位置。当用户释放鼠标时,DragDropManager将触发Dropped事件,调用方可以结束整个拖放动作。
该实现非常简短并且具有可移植性。程序集仅有25K左右,并且代码可以在Silverlight或者WPF下进行编译,完全不需要任何的条件编译代码块。