public void FilterClicked(object param)
        {
            DeckType attrib;

            if (!Enum.TryParse <DeckType>(param.ToString(), out attrib))
            {
                throw new ArgumentException(string.Format("Unknow value for DeckType={0}", param));
            }

            //toggle filter value
            FilterButtonState[attrib] = !FilterButtonState[attrib];

            //fires to many events on colection, will filter once for reset, and then for every selected attrib
            FilteredTypes.Clear();

            //if all unslected - show all
            if (FilterButtonState.All(f => !f.Value))
            {
                Enum.GetValues(typeof(DeckType)).OfType <DeckType>().All(t => { FilteredTypes.Add(t); return(true); });
            }
            else
            {
                foreach (DeckType type in FilterButtonState.Where(f => f.Value).Select(f => f.Key))
                {
                    FilteredTypes.Add(type);
                }
            }

            messanger.Send(
                new DeckListFilterChanged(DeckListFilterChanged.Source.TypeFilter, FilteredTypes, showCompletedArenaRuns, showHiddenDecks, null, null),
                ControlMessangerContext.DeckList_DeckFilterControl);
        }
        public void Reset()
        {
            foreach (DeckType a in Enum.GetValues(typeof(DeckType)))
            {
                //unselct all in UI
                FilterButtonState[a] = false;

                //reset filter collection
                FilteredTypes.Clear();
                Enum.GetValues(typeof(DeckType)).OfType <DeckType>().All(t => { FilteredTypes.Add(t); return(true); });
            }
            ShowCompletedArenaRuns = false;
            ShowHiddenDecks        = false;
            RaisePropertyChangedEvent("FilterButtonState");
        }