Я нашел обходной путь, который работает, но он мне не нравится.
Что я делаю, так это снова сбрасываю свойство Filter
, которое выполняет свою работу.
Я бродил вокругНемного в Reflector пытается найти то, что мне не хватает, но не добился большого успеха, проясняя причину.
private ICollectionView _Products;
public ICollectionView Products
{
get
{
if (_Products == null)
{
_Products =
CollectionViewSource.GetDefaultView(ProductsLibrary.SupportedProducts);
_Products.Filter = product => FilterProduct((Product)product);
}
return _Products;
}
}
private bool FilterProduct(Product product)
{
/**********************/
}
////////////////////
private void Search()
{
//Products.Refresh();
Products.Filter = product => FilterProduct((Product)product);
Categories.Refresh();
CategoryProducts.Refresh();
}
ОБНОВЛЕНИЕ
Я нашел гораздо более простое решение.
Я изменил первый ICollectionView
на простой IEnumerable<Product>
, возвращая запрос Linq.
Не выяснив, почему обновление не сработало, однако в других представлениях коллекции (которые связаны спользовательский интерфейс) обновление работает, и поэтому фильтр linq IEnumerable<Product>
делает свою работу.