Можно ли преобразовать IEnumerable в пользовательский класс, который по-прежнему принадлежит классу ObservableCollection?Бросок IEnumerable в пользовательский класс ObservableCollection?
Причина: я хочу выбрать только отфильтрованный набор элементов на , получить. Я хочу реализовать его на , чтобы получить, потому что многие другие свойства ссылаются на CustomItems и выполняют процессы над элементами, но я хочу как-то заставить его фильтровать набор элементов в зависимости от того, включено ли значение или нет.
Ниже код, чтобы помочь объяснить, что я хочу добиться:
public class CustomItemsCollection : ObservableCollection<ItemViewModel>
{
public ListView ListView { get; set; }
public void ScrollToItem(object item = null)
{
//Some custom Code
}
}
А вот моя собственность, что я хочу, чтобы настроить:
private CustomItemsCollection _CustomItems = null;
[JsonProperty]
public CustomItemsCollection CustomItems
{
get
{
if (_CustomItems != null)
{
if(SomeValueIsEnabled)
{
var filteredItems = _CustomItems.Where(c => c.Property.equals(SomeValue));
var castedItems = (CustomItemsCollection)filteredItems;
return castedItems;
}
return _CustomItems;
}
_CustomItems = new CustomItemsCollection();
_CustomItemsChangedSource = new CollectionChangedWeakEventSource();
_CustomItemsChangedSource.SetEventSource(_CustomItems);
_CustomItemsChangedSource.CollectionChanged += _CustomItemsChangedSource_CollectionChanged;
return _CustomItems;
}
set { _CustomItems = value; RaisePropertyChanged("CustomItems"); }
}
В частности, эта часть:
if(SomeValueIsEnabled)
{
var filteredItems = _CustomItems.Where(c => c.Property.equals(SomeValue));
var castedItems = (CustomItemsCollection)filteredItems;
return castedItems;
}
Возможно ли это или, может быть, неправильно? Какова наилучшая практика?
Спасибо!
Работали в совершенстве! Существуют ли возможные утечки памяти при создании нового CustomItemsCollection каждый раз, когда запрашиваются пользовательские элементы? – Water
Нет, утечки не должно быть. GC будет очищаться, как обычно. – Blorgbeard