private void OnFilterItemClickedEvent(StatisticTypeModel statisticType, bool isSelected) { if (isSelected) { if (_allCollection.Contains(statisticType.StatisticType)) { _detailStatistic.Clear(); if (statisticType.StatisticType == StatisticTypeEnum.Capital) { AllIncome.ChangeSelectionState(false); AllOutcome.ChangeSelectionState(false); Diff.ChangeSelectionState(false); _allStatistic.Clear(); } else { Capital.ChangeSelectionState(false); int capitalIndex = _allStatistic.IndexOf(_allStatistic.Where(s => s.StatisticType == StatisticTypeEnum.Capital).FirstOrDefault()); if (capitalIndex >= 0) { _allStatistic.RemoveAt(capitalIndex); } } _allStatistic.Add(statisticType); foreach (FilterItemViewModel item in IncomeItems) { item.ChangeSelectionState(false); } foreach (FilterItemViewModel item in OutcomeItems) { item.ChangeSelectionState(false); } } else { _allStatistic.Clear(); _detailStatistic.RemoveAll(s => s.Catogery != statisticType.Catogery); _detailStatistic.Add(statisticType); AllIncome.ChangeSelectionState(false); AllOutcome.ChangeSelectionState(false); Diff.ChangeSelectionState(false); Capital.ChangeSelectionState(false); foreach (FilterItemViewModel item in (statisticType.Catogery == StatisticCategoryEnum.Income ? OutcomeItems : IncomeItems)) { item.ChangeSelectionState(false); } } } else { if (_allCollection.Contains(statisticType.StatisticType)) { _allStatistic.Remove(statisticType); } else { _detailStatistic.Remove(statisticType); } } RaiseFilterItemsChangedEvent(); }