private void SelectionChange(object cItem, bool bSelected) { if (null != cItem) { List<object> aItems; if (null != SelectionChanging) { aItems = new List<object>(); aItems.Add(cItem); SelectionChangingEventsArgs e; if(bSelected) e = new SelectionChangingEventsArgs(null, aItems); else e = new SelectionChangingEventsArgs(aItems, null); SelectionChanging(this, e); if (e.bCancel) return; } if (null != aItemsSelected) aItems = ((IEnumerable<object>)aItemsSelected).ToList(); else aItems = new List<object>(); if(bSelected) aItems.Add(cItem); else aItems.Remove(cItem); _bMark = false; aItemsSelected = aItems; _bMark = true; MarkRight(); } }