private void OnItemsChanged(object sender, NotifyCollectionEventArgs e) { if (IsAttachedToListBox && IsPresented) { ListBox.OnItemsChanged(sender, e); } }
private void OnChanged(object sender, NotifyCollectionEventArgs e) { switch (e.Event) { case NotifyEvent.Insert: for (int i = e.StartIndex; i <= e.EndIndex; ++i) { var item = _itemConverter(_boundCollection[i]); _itemsCollection.InsertSafe(i, item); } break; case NotifyEvent.Remove: _itemsCollection.RemoveRangeSafe(e.StartIndex, e.ModifiedItems); break; case NotifyEvent.Set: for (int i = e.StartIndex; i <= e.EndIndex; ++i) { var item = _itemConverter(_boundCollection[i]); _itemsCollection[i] = item; } break; case NotifyEvent.Clear: _itemsCollection.ClearSafe(); break; } }
private void OnPanelsChanged(object sender, NotifyCollectionEventArgs e) { _sizes.Clear(); if (!IsUpdating) { NotifyContentSizeChanged(); } }
private void OnGroupsChanged(object sender, NotifyCollectionEventArgs e) { switch(e.Event) { case NotifyEvent.Insert: for(int i = e.StartIndex; i <= e.EndIndex; ++i) { var group = _group.Groups[i]; var item = new RepositoryGroupListItem(group); _groupsMapping.Add(group, item); _items.Insert(i, item); } break; case NotifyEvent.Remove: for(int i = e.StartIndex; i <= e.EndIndex; ++i) { var item = _items[i] as RepositoryGroupListItem; if(item != null) { _groupsMapping.Remove(item.DataContext); } } _items.RemoveRange(e.StartIndex, e.ModifiedItems); break; case NotifyEvent.Set: for(int i = e.StartIndex; i <= e.EndIndex; ++i) { var item = _items[i] as RepositoryGroupListItem; if(item != null) { _groupsMapping.Remove(item.DataContext); } var group = _group.Groups[i]; item = new RepositoryGroupListItem(group); _groupsMapping.Add(group, item); _items[i] = item; } break; case NotifyEvent.Clear: _groupsMapping.Clear(); _items.RemoveRange(0, e.ModifiedItems); break; } }
private void OnPanelsChanging(object sender, NotifyCollectionEventArgs e) { switch (e.Event) { case NotifyEvent.Clear: _panelHover.Drop(); break; case NotifyEvent.Remove: if (_panelHover.Index >= e.StartIndex) { if (_panelHover.Index <= e.EndIndex) { _panelHover.Drop(); } else { _panelHover.ResetIndex(_panelHover.Index - e.ModifiedItems); } } break; case NotifyEvent.Set: if (_panelHover.Index >= e.StartIndex) { if (_panelHover.Index <= e.EndIndex) { _panelHover.Drop(); } else { _panelHover.ResetIndex(_panelHover.Index - e.ModifiedItems); } } break; } }
private void OnItemsChanging(object sender, NotifyCollectionEventArgs e) { if(IsAttachedToListBox && IsPresented) { ListBox.OnItemsChanging(sender, e); } }
private void OnRepositoriesChanged(object sender, NotifyCollectionEventArgs e) { switch(e.Event) { case NotifyEvent.Insert: for(int i = e.StartIndex; i <= e.EndIndex; ++i) { var repo = _group.Respositories[i]; var item = new RepositoryListItem(repo); _repositoriesMapping.Add(repo, item); _items.Insert(i + _groupsMapping.Count, item); } break; case NotifyEvent.Remove: for(int i = e.StartIndex; i <= e.EndIndex; ++i) { var item = _items[i + _groupsMapping.Count] as RepositoryListItem; if(item != null) { _repositoriesMapping.Remove(item.DataContext); } } _items.RemoveRange(e.StartIndex + _groupsMapping.Count, e.ModifiedItems); break; case NotifyEvent.Set: for(int i = e.StartIndex; i <= e.EndIndex; ++i) { var item = _items[i + _groupsMapping.Count] as RepositoryListItem; if(item != null) { _repositoriesMapping.Remove(item.DataContext); } var repo = _group.Respositories[i]; item = new RepositoryListItem(repo); _repositoriesMapping.Add(repo, item); _items[i + _groupsMapping.Count] = item; } break; case NotifyEvent.Clear: _repositoriesMapping.Clear(); _items.RemoveRange(_groupsMapping.Count, e.ModifiedItems); break; } }
internal void OnItemsChanging(object sender, NotifyCollectionEventArgs e) { bool plainListChanged = false; var items = (CustomListBoxItemsCollection)sender; var item = items.Parent; switch(e.Event) { case NotifyEvent.Clear: if(item == null) { _lastClickedItemIndex = -1; _itemFocus.Drop(); _itemHover.Drop(); if(_itemPlainList.Count != 0) { plainListChanged = true; _itemPlainList.Clear(); _selectedItems.Clear(); if(Created) { NotifyContentSizeChanged(); } } } else { if(item.IsPresented) { if(items.Count != 0) { if(item.IsExpanded) { RemoveItems(items, 0, items.Count - 1); plainListChanged = true; } else { _oldItem = item; } } } } break; case NotifyEvent.Set: if((item == null) || (item.IsPresented && item.IsExpanded)) { _oldItem = items[e.StartIndex]; _setItemPos = _itemPlainList.IndexOf(_oldItem); } break; case NotifyEvent.Remove: if((item == null) || (item.IsPresented && item.IsExpanded)) { RemoveItems(items, e.StartIndex, e.EndIndex); plainListChanged = true; } if(_itemPlainList.Count == 0) { Invalidate(_itemsArea); } break; } if(_haveAutoSizeColumns && plainListChanged) { InvalidateAutoSizeColumns(); } }
internal void OnItemsChanged(object sender, NotifyCollectionEventArgs e) { bool plainListChanged = false; var items = (CustomListBoxItemsCollection)sender; var item = items.Parent; switch(e.Event) { case NotifyEvent.Clear: if(_oldItem != null) { InvalidateItem(_oldItem); _oldItem = null; } break; case NotifyEvent.Remove: break; case NotifyEvent.Set: if(_setItemPos != -1) { var newitem = items[e.StartIndex]; _itemPlainList[_setItemPos] = newitem; var y1 = GetItemY1Offset(_setItemPos); int id = _setItemPos + 1; if(_oldItem.IsExpanded && _oldItem.Items.Count != 0) { int level = _oldItem.Level; int end = id + 1; while(end < _itemPlainList.Count && _itemPlainList[end].Level > level) { ++end; } if(_itemFocus.IsTracked) { if(_itemFocus.Index >= id) { if(_itemFocus.Index >= end) { _itemFocus.ResetIndex(_itemFocus.Index - (end - id)); } else { _itemFocus.Drop(); } } } if(_itemHover.IsTracked) { if(_itemHover.Index >= id) { if(_itemHover.Index >= end) { _itemHover.ResetIndex(_itemHover.Index - (end - id)); } else { _itemHover.Drop(); } } } _itemPlainList.RemoveRange(id, end - id); plainListChanged = true; } if(newitem.IsExpanded && newitem.Items.Count != 0) { int end = id; foreach(var i in newitem.Items) { end = InsertItem(id, i); } plainListChanged = true; } NotifyContentSizeChanged(); _setItemPos = -1; _oldItem = null; } break; case NotifyEvent.Insert: { bool noitems = _itemPlainList.Count == 0; if(item == null) { int start = e.StartIndex; int end = e.EndIndex; int id = 0; if(start != 0) { if(end == items.Count - 1) { id = _itemPlainList.Count - (end - start); } else { var sitem = items[start - 1]; while(sitem.Items.Count != 0 && sitem.IsExpanded) { sitem = sitem.Items[sitem.Items.Count - 1]; } id = _itemPlainList.IndexOf(sitem) + 1; } } int startId = id; bool renderAll = id != _itemPlainList.Count; for(int i = start; i <= end; ++i) { id = InsertItem(id, items[i]); } plainListChanged = true; NotifyContentSizeChanged(); } else { if(item.IsPresented) { if(item.IsExpanded) { int start = e.StartIndex; int end = e.EndIndex; int id = 0; if(start == 0) { id = _itemPlainList.IndexOf(item) + 1; } else { var sitem = items[start - 1]; while(sitem.Items.Count != 0 && sitem.IsExpanded) { sitem = sitem.Items[sitem.Items.Count - 1]; } id = _itemPlainList.IndexOf(sitem) + 1; } int startid = id; for(int i = start; i <= end; ++i) { id = InsertItem(id, items[i]); } NotifyContentSizeChanged(); plainListChanged = true; } else { if(items.Count == e.ModifiedItems) { InvalidateItem(item); } } } } if(noitems) Invalidate(_itemsArea); } break; } if(_haveAutoSizeColumns && plainListChanged) { InvalidateAutoSizeColumns(); } }
private void OnSelectedItemsChanged(object sender, NotifyCollectionEventArgs e) { OnSelectionChanged(); }
private void OnColumnsChanged(object sender, NotifyCollectionEventArgs e) { UpdateAutoSizeColumnsContentWidth(); NotifyContentSizeChanged(); }