private void List_ItemPropertyChanged(object sender, PropertyChangedEventArgs e) { if (!_loaded) { return; } if (ListFilter.IsAffectedBy(e.PropertyName)) { var server = (ServerEntry)sender; var willBeVisible = ListFilter.Test(server); if (ReferenceEquals(_current, server)) { _testMeLater = willBeVisible ? null : server; return; } var wasVisible = MainList.Contains(sender); if (willBeVisible != wasVisible) { MainList.Refresh(sender); return; } } if (e.PropertyName == nameof(ServerEntry.IsFavourite) || e.PropertyName == nameof(ServerEntry.ReferencesString)) { return; } if (Sorting?.IsAffectedBy(e.PropertyName) == true) { MainList.Refresh(sender); } }