public override void Shown(WindowEventArgs args)
        {
            if (args == null || args.Player < 0 || args.Player > 2)
            {
                throw new ArgumentException(nameof(WindowEventArgs.Player));
            }

            // We're already working on things
            if (BackgroundWorker.IsBusy)
            {
                return;
            }

            // Load newest config
            _player = args.Player;
            var teamConfig = _player == 1 ? _config.Value.Options.PlayerOne.Team : _config.Value.Options.PlayerTwo.Team;

            _workingConfig.MemberIds.Clear();
            _workingConfig.MemberIds.AddRange(teamConfig.MemberIds);

            // Set New buttons
            if (!BackgroundWorkerTeam.IsBusy)
            {
                BackgroundWorkerTeam.RunWorkerAsync();
            }
            BackgroundWorker.RunWorkerAsync();
        }
        private void ItemSelcted(object sender, ItemSelectedEventArgs args)
        {
            if (_ignoreFiredSelectionEventsFlag)
            {
                return;
            }

            var button = sender as SpriteButton;
            var idx    = button.Index + 1; // Convert back from zero based to pokemon 1-based id

            if (args.Selected && _workingConfig.MemberIds.All(id => id != idx))
            {
                if (_workingConfig.MemberIds.Count == 6)
                {
                    _ignoreFiredSelectionEventsFlag = true;
                    var popped = _selected.Pop();
                    popped.Checked = false;
                    _workingConfig.MemberIds.Remove(popped.Index + 1); // Convert back from zero based to pokemon 1-based id
                    _ignoreFiredSelectionEventsFlag = false;
                }

                _workingConfig.MemberIds.Add(idx);
                _selected.Push(button);
            }
            else if (!args.Selected && _workingConfig.MemberIds.Any(id => id == idx))
            {
                _workingConfig.MemberIds.Remove(idx);
            }

            if (!BackgroundWorkerTeam.IsBusy)
            {
                BackgroundWorkerTeam.RunWorkerAsync();
            }
        }