Skip to content

Instantly share code, notes, and snippets.

@StillLearnin
Last active May 17, 2016 20:03
Show Gist options
  • Save StillLearnin/9af951f355809a14e5a2794cfb7ebccd to your computer and use it in GitHub Desktop.
Save StillLearnin/9af951f355809a14e5a2794cfb7ebccd to your computer and use it in GitHub Desktop.
Wraps ObservableCollection and ListCollectionView into one object for ease of use.
public class ListFilteredSorted<T> : BaseInfo
{
public ListFilteredSorted()
{
Init();
}
public ListFilteredSorted(Predicate<object> filter)
{
FilterMethod = filter;
Init();
}
private void Init()
{
_ItemsFilteredSorted = new ListCollectionView(Items);
}
public void AddItem(T item)
{
Items.Add(item);
ItemsFilteredSorted.Refresh();
}
#region Items
/// <summary>
/// Store for the Items property.</summary>
private ObservableCollection<T> _Items = new ObservableCollection<T>();
/// <summary>
/// Gets or sets Items property.</summary>
public ObservableCollection<T> Items
{
get { return _Items; }
set
{
if (_Items == value) return;
_Items = value;
OnPropertyChanged("Items");
}
}
#endregion //Items
#region ItemFilter
/// <summary>
/// Store for the ItemFilter property.</summary>
private String _ItemFilter = string.Empty;
/// <summary>
/// Gets or sets ItemFilter property.</summary>
public String ItemFilter
{
get { return _ItemFilter; }
set
{
if (_ItemFilter == value) return;
_ItemFilter = value;
OnPropertyChanged("ItemFilter");
ItemsFilteredSorted.Refresh();
}
}
#endregion //ItemFilter
#region ItemsFilteredSorted
/// <summary>
/// Store for the ItemsFilteredSorted property.</summary>
private ListCollectionView _ItemsFilteredSorted;
/// <summary>
/// Gets or sets ItemsFilteredSorted property.</summary>
public ListCollectionView ItemsFilteredSorted
{
get
{
return _ItemsFilteredSorted;
}
}
#endregion //ItemsFilteredSorted
#region FilterMethod
/// <summary>
/// Gets or sets FilterMethod property.</summary>
public Predicate<object> FilterMethod
{
get { return _ItemsFilteredSorted.Filter; }
set
{
if (_ItemsFilteredSorted.Filter == value) return;
_ItemsFilteredSorted.Filter = value;
OnPropertyChanged("FilterMethod");
ItemsFilteredSorted.Refresh();
}
}
#endregion //FilterMethod
public void RemoveItem(T item)
{
Items.Remove(item);
ItemsFilteredSorted.Refresh();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment