Apparently, RadGridView does not treat property change as reason to update filters. You can test and see that if you update the value via grid itself, then filtering takes place normally because proper grid edit procedure is done.
Simple solution can be to raise some custom event in ViewModel to notify the View that filters should be updated:
grdNPISItem.FilterDescriptors.Reset();
But I think that it could be better to move that logic to ViewModel and make a collection with just existing values and bind it to the grid:
public IEnumerable<NPISItem> ExistingNPISItemsCollection
{
get
{
return NPISItemsCollection == null
? Enumerable.Empty<NPISItem>()
: NPISItemsCollection .Where(d => !d.IsDeleted);
}
}
Then when you change IsDeleted
property you just call PropertyChanged for this collection and grid will pick it up. This also allows to keep grid column filtering so user can work with shown items as he likes.
The null check here is in case collection`s not initialized yet when binding takes place, so you can either remove it if you don`t need it or call PropertyChanged for this collection in NPISItemsCollection
setter.