public AccountModel() { _updater = new AccountUpdater(this); _idler = new IdleManager(this); AllBadges = new ObservableCollection<BadgeModel>(); IdleQueueBadges = new ObservableCollection<BadgeModel>(); Games = new ObservableCollection<BadgeModel> {new BadgeModel("-1", "new", "0", "0")}; #region Commands LoginCmd = new BaseCommand(_ => Login()); LogoutCmd = new BaseCommand(_ => Logout()); StartBadgeIdleCmd = new BaseCommand(StartBadgeIdle, CanStartBadgeIdle); StopBadgeIdleCmd = new BaseCommand(StopBadgeIdle, CanStopBadgeIdle); BlacklistBadgeCmd = new BaseCommand(BlacklistBadge); EnqueueAllCmd = new BaseCommand(EnqueueAll); DequeueAllCmd = new BaseCommand(_ => DequeueAll()); SetHigherPriorityCmd = new BaseCommand(SetHigherPriority, CanSetHigherPriority); SetLowerPriorityCmd = new BaseCommand(SetLowerPriority, CanSetLowerPriority); EnqueueBadgeHighCmd = new BaseCommand(EnqueueBadgeHigh, CanEnqueueBadge); EnqueueBadgeLowCmd = new BaseCommand(EnqueueBadgeLow, CanEnqueueBadge); DequeueBadgeCmd = new BaseCommand(DequeueBadge, b => !CanEnqueueBadge(b)); IdleCmd = new BaseCommand(Idle, CanIdle); AddGameCmd = new BaseCommand(o => AddGame()); RemoveGameCmd = new BaseCommand(RemoveGame); SettingsCmd = new BaseCommand(o=>SettingsDialog()); #endregion _badges = CollectionViewSource.GetDefaultView(AllBadges); var quick = (ICollectionViewLiveShaping)_badges; quick.LiveFilteringProperties.Add("IsBlacklisted"); quick.LiveFilteringProperties.Add("HasTrial"); quick.LiveFilteringProperties.Add("CardIdleActive"); quick.LiveFilteringProperties.Add("IsInQueue"); quick.IsLiveFiltering = true; _badgePropertiesFilters = Enum.GetValues(typeof (BadgeProperty)) .OfType<BadgeProperty>() .Select(p => new SelectionItemVm<FilterState> { Key = p, Value = FilterState.Any }) .ToList(); foreach (var item in _badgePropertiesFilters) { item.PropertyChanged += (sender, e) => { if (e.PropertyName != "Value") return; SetFilter(); }; } }