64 lines
1.8 KiB
C#
64 lines
1.8 KiB
C#
using System.Collections.Specialized;
|
|
using System.Windows;
|
|
|
|
namespace HandyControl.Controls;
|
|
|
|
public class TransferGroup : SimpleItemsControl
|
|
{
|
|
protected override void Refresh()
|
|
{
|
|
if (Items.Count > 0)
|
|
{
|
|
foreach (FrameworkElement item in Items)
|
|
{
|
|
item.Style = ItemContainerStyle;
|
|
ItemsHost.Children.Add(item);
|
|
}
|
|
}
|
|
}
|
|
|
|
protected override void OnItemTemplateChanged(DependencyPropertyChangedEventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
protected override void OnItemContainerStyleChanged(DependencyPropertyChangedEventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
protected override DependencyObject GetContainerForItemOverride() => new TransferItem();
|
|
|
|
protected override bool IsItemItsOwnContainerOverride(object item) => item is TransferItem;
|
|
|
|
protected override void OnItemsChanged(object sender, NotifyCollectionChangedEventArgs e)
|
|
{
|
|
if (ItemsHost == null) return;
|
|
|
|
switch (e.Action)
|
|
{
|
|
case NotifyCollectionChangedAction.Add:
|
|
if (e.NewItems != null)
|
|
{
|
|
if (e.NewItems[0] is FrameworkElement item)
|
|
{
|
|
item.Style = ItemContainerStyle;
|
|
ItemsHost.Children.Insert(e.NewStartingIndex, item);
|
|
}
|
|
}
|
|
break;
|
|
case NotifyCollectionChangedAction.Remove:
|
|
if (e.OldItems != null)
|
|
{
|
|
foreach (FrameworkElement item in e.OldItems)
|
|
{
|
|
ItemsHost.Children.Remove(item);
|
|
}
|
|
}
|
|
break;
|
|
case NotifyCollectionChangedAction.Reset:
|
|
ItemsHost.Children.Clear();
|
|
break;
|
|
}
|
|
}
|
|
} |