Consider the following collection.
I
public class GroupConsecutiveEqualItemsConverter : IValueConverter
{
static readonly object UnsetValue = new object();
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
IEnumerable source = value as IEnumerable;
if (source == null) return DependencyProperty.UnsetValue;
string propertyName = parameter as string;
var result = new ObservableCollection>();
var notify = value as INotifyCollectionChanged;
if (notify != null) notify.CollectionChanged += delegate { Reload(result, source, propertyName); };
Reload(result, source, propertyName);
return result;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotSupportedException();
}
void Reload(ObservableCollection> result, IEnumerable source, string propertyName)
{
result.Clear();
object previous = UnsetValue;
List