void objectListView_ItemChecked(object sender, ItemCheckedEventArgs e)
        {
            if (GroupingChanging != null)
            {
                var eventArgs = new GroupingChangingEventArgs <T>()
                {
                    Grouping = (e.Item as OLVListItem).RowObject as Grouping <T>,
                    NewIndex = (e.Item as OLVListItem).Index
                };
                GroupingChanging(this, eventArgs);
                if (eventArgs.Cancel)
                {
                    return;
                }
            }

            if (GroupingChanged != null)
            {
                GroupingChanged(this, EventArgs.Empty);
            }
        }
 void rearrangingDropSink_CanDrop(object sender, OlvDropEventArgs e)
 {
     if (GroupingChanging != null)
     {
         var eventArgs = new GroupingChangingEventArgs <T>()
         {
             Grouping = (e.DataObject as OLVDataObject).ModelObjects[0] as Grouping <T>,
             NewIndex = Math.Max(0, e.DropTargetIndex)
         };
         if (e.DropTargetItem != null && ReferenceEquals(eventArgs.Grouping, e.DropTargetItem.RowObject))
         {
             e.Effect = DragDropEffects.None;
         }
         else
         {
             GroupingChanging(this, eventArgs);
             if (eventArgs.Cancel)
             {
                 e.Effect = DragDropEffects.None;
             }
         }
     }
 }