/// <inheritdoc/>
 public override void Clear()
 {
     LiveShapingItems.Values.ForEach(OnLiveShapingItemRemoved);
     LiveShapingItems.Clear();
     FilteredItems.Clear();
     base.Clear();
 }
 private void OnItemSortPropertyChanged(object sender, PropertyChangedEventArgs e)
 {
     if (LiveShapingItems.TryGetValue((T)sender, out var liveShapingItem))
     {
         liveShapingItem.IsSortDirty = true;
     }
     else
     {
         Debug.WriteLine($"{sender} not found");
     }
 }
        private void CreateLiveShapingItem(T item)
        {
            var liveShapingItem = new LiveShapingItem <T>(item);

            liveShapingItem.PropertyChanged += OnDependencyPropertyChanged;
            LiveShapingItems.Add(item, liveShapingItem);
            foreach (KeyValuePair <LiveShapingProperty, DependencyProperty> pair in ActiveDependencyProperties)
            {
                RegisterBinding(liveShapingItem, pair.Key, pair.Value);
            }
        }
 private void RemoveLiveShapingItemFor(T item)
 {
     OnLiveShapingItemRemoved(LiveShapingItems[item]);
     LiveShapingItems.Remove(item);
 }