public void AddSize()
        {
            var ret = new SizeItemViewModel()
            {
                ItemSource = CardSizes, Name = "Size"
            };

            CardSizes.Add(ret);
            Selection = ret;
            RaisePropertyChanged("CardSizes");
        }
 void IDropTarget.Drop(IDropInfo dropInfo)
 {
     if (dropInfo.Data is SizeItemViewModel)
     {
         SizeItemViewModel item = dropInfo.Data as SizeItemViewModel;
         var card = new CardViewModel
         {
             Size = item
         };
         ViewModelLocator.PreviewTabViewModel.Cards.Add(card);
     }
 }
        public PreviewTabViewModel()
        {
            var _game = ViewModelLocator.GameLoader.Game;

            if (_game.GlobalPlayer == null)
            {
                _game.GlobalPlayer = new GlobalPlayer()
                {
                    Counters = new List <Counter>(),
                    Groups   = new List <Group>()
                };
            }
            Hand       = _game.Player.Hand == null ? null : new GroupItemViewModel(_game.Player.Hand);
            TableGroup = new GroupItemViewModel(_game.Table);
            Piles      = new ObservableCollection <IdeListBoxItemBase>();
            foreach (var pile in _game.Player.Groups)
            {
                Piles.Add(new GroupItemViewModel(pile)
                {
                    ItemSource = Piles
                });
            }
            Piles.CollectionChanged += (a, b) =>
            {
                _game.Player.Groups = Piles.Select(x => (x as GroupItemViewModel)._group).ToList();
                RaisePropertyChanged("CollapsedPiles");
                RaisePropertyChanged("VisiblePiles");
            };
            AddPileCommand = new RelayCommand(AddPile);

            Counters = new ObservableCollection <IdeListBoxItemBase>();
            foreach (var counter in _game.Player.Counters)
            {
                Counters.Add(new CounterItemViewModel(counter)
                {
                    ItemSource = Counters
                });
            }
            Counters.CollectionChanged += (a, b) =>
            {
                _game.Player.Counters = Counters.Select(x => (x as CounterItemViewModel)._counter).ToList();
            };
            AddCounterCommand = new RelayCommand(AddCounter);

            GlobalPiles = new ObservableCollection <IdeListBoxItemBase>();
            foreach (var pile in _game.GlobalPlayer.Groups)
            {
                GlobalPiles.Add(new GroupItemViewModel(pile)
                {
                    ItemSource = GlobalPiles
                });
            }
            GlobalPiles.CollectionChanged += (a, b) =>
            {
                _game.GlobalPlayer.Groups = Piles.Select(x => (x as GroupItemViewModel)._group).ToList();
                RaisePropertyChanged("CollapsedGlobalPiles");
                RaisePropertyChanged("VisibleGlobalPiles");
            };
            AddGlobalPileCommand = new RelayCommand(AddGlobalPile);

            GlobalCounters = new ObservableCollection <IdeListBoxItemBase>();
            foreach (var counter in _game.GlobalPlayer.Counters)
            {
                GlobalCounters.Add(new CounterItemViewModel(counter)
                {
                    ItemSource = GlobalCounters
                });
            }

            GlobalCounters.CollectionChanged += (a, b) =>
            {
                _game.GlobalPlayer.Counters = GlobalCounters.Select(x => (x as CounterItemViewModel)._counter).ToList();
            };
            AddGlobalCounterCommand = new RelayCommand(AddGlobalCounter);

            CardSizes = new ObservableCollection <IdeListBoxItemBase>();
            foreach (var sizeDef in _game.CardSizes)
            {
                var size = new SizeItemViewModel(sizeDef.Value)
                {
                    ItemSource = CardSizes
                };
                if (sizeDef.Key == "")
                {
                    size.IsDefault = true;
                    size.CanRemove = false;
                }
                CardSizes.Add(size);
            }
            CardSizes.CollectionChanged += (a, b) =>
            {
                UpdateSizes();
            };
            AddSizeCommand = new RelayCommand(AddSize);

            Phases = new ObservableCollection <IdeListBoxItemBase>();
            foreach (var phase in _game.Phases)
            {
                Phases.Add(new PhaseItemViewModel(phase)
                {
                    ItemSource = Phases
                });
            }
            Phases.CollectionChanged += (a, b) =>
            {
                _game.Phases = Phases.Select(x => (x as PhaseItemViewModel)._phase).ToList();
            };
            AddPhaseCommand = new RelayCommand(AddPhase);

            Boards = new ObservableCollection <IdeListBoxItemBase>();
            foreach (var boardDef in _game.GameBoards)
            {
                var board = new BoardItemViewModel(boardDef.Value)
                {
                    ItemSource = Boards
                };
                if (boardDef.Key == "")
                {
                    DefaultBoard = board;
                }
                Boards.Add(board);
            }
            ActiveBoard = DefaultBoard;
            Boards.CollectionChanged += (a, b) =>
            {
                UpdateBoards();
            };
            AddBoardCommand = new RelayCommand(AddBoard);

            Table = new TableItemViewModel();

            Cards = new ObservableCollection <CardViewModel>();
            var card = new CardViewModel
            {
                Size = DefaultSize
            };

            Cards.Add(card);

            RaisePropertyChanged("Cards");
        }