private void OnSelectionChanged() { Money sumOfWhiteList = NonPrivatePockets .Where(pocket => pocket.Labels.All(pocketLabel => LabelsWhiteList.Any(labelViewModel => pocketLabel == labelViewModel.Value))) .Sum(x => x.Amount); _includePrivatePocket = NonPrivatePockets.Sum(x => x.Amount) < _targetAmount || (LabelsWhiteList.IsEmpty() && _privatePocket.Amount >= _targetAmount); var totalSelected = sumOfWhiteList + (_includePrivatePocket ? _privatePocket.Amount : Money.Zero); EnoughSelected = totalSelected >= _targetAmount; this.RaisePropertyChanged(nameof(LabelsWhiteList)); this.RaisePropertyChanged(nameof(LabelsBlackList)); }