private void RefreshAvailableDecks() { if (AvailableDecks.Count == 0) { for (var i = 1; i <= 9; i++) { var key = i.ToString(CultureInfo.InvariantCulture); var model = new AvailableDecksModel { Slot = key, AvailableDecks = new BindableCollection <DeckModel>(Decks.Where(x => x.Key == key || String.IsNullOrEmpty(x.Key))), SelectedDeck = Decks.FirstOrDefault(x => x.Key == key) }; model.PropertyChanged += AvailableDecksModel_OnPropertyChanged; AvailableDecks.Add(model); } NotifyOfPropertyChange(() => AvailableDecks); } else { for (var i = 1; i <= 9; i++) { var key = i.ToString(CultureInfo.InvariantCulture); AvailableDecks[i - 1].AvailableDecks = new BindableCollection <DeckModel>(Decks.Where(x => x.Key == key || String.IsNullOrEmpty(x.Key))); AvailableDecks[i - 1].PropertyChanged -= AvailableDecksModel_OnPropertyChanged; AvailableDecks[i - 1].SelectedDeck = Decks.FirstOrDefault(x => x.Key == key); AvailableDecks[i - 1].PropertyChanged += AvailableDecksModel_OnPropertyChanged; } NotifyOfPropertyChange(() => AvailableDecks); } }
private void OnSelectDeck(object parameter) { // Run some type checks before we start using it. int index; var selectedDeck = parameter as string; if (Int32.TryParse(selectedDeck, out index)) { // Try to get the deck at this index var deckAtIndex = AvailableDecks.ElementAtOrDefault(index); if (deckAtIndex != null) { // Found. Apply and update UI CurrentDeck = deckAtIndex; RaisePropertyChange("CurrentDeck"); } } OnNew(); }