コード例 #1
0
        public SocketedGemsEditingViewModel(ItemImageService itemImageService, Item itemWithSockets)
        {
            _itemWithSockets = itemWithSockets;
            // convert ItemDB.Gems into GemBaseViewModels
            AvailableGems   = ItemDB.GetAllGems().Select(g => new GemBaseViewModel(itemImageService, g)).ToList();
            NumberOfSockets = _itemWithSockets.BaseType.MaximumNumberOfSockets;
            NewSocketedGem  = new SocketedGemViewModel
            {
                GemBase = AvailableGems[0],
                Level   = 1,
                Quality = 0,
                Group   = 1
            };
            AddGemCommand    = new RelayCommand(AddGem, CanAddGem);
            RemoveGemCommand = new RelayCommand <SocketedGemViewModel>(RemoveGem);

            SocketedGemsViewSource = new CollectionViewSource
            {
                Source = _socketedGems
            };
            SocketedGemsViewSource.SortDescriptions.Add(new SortDescription(
                                                            nameof(SocketedGemViewModel.GemBase) + "." + nameof(GemBaseViewModel.Name),
                                                            ListSortDirection.Ascending));
            SocketedGemsViewSource.SortDescriptions.Add(new SortDescription(
                                                            nameof(SocketedGemViewModel.Group),
                                                            ListSortDirection.Ascending));

            // convert currently socketed gem Items into SocketedGemViewModels
            foreach (var gem in _itemWithSockets.Gems)
            {
                var gemBase = AvailableGems.FirstOrDefault(g => g.Name == gem.Name);
                if (gemBase == null)
                {
                    continue;
                }
                var socketedGem = new SocketedGemViewModel
                {
                    GemBase = gemBase,
                    Level   = ItemDB.LevelOf(gem),
                    Quality = ItemDB.QualityOf(gem),
                    Group   = gem.SocketGroup + 1
                };
                socketedGem.PropertyChanged += SocketedGemsOnPropertyChanged;
                _socketedGems.Add(socketedGem);
            }
        }
コード例 #2
0
 private void RemoveGem(SocketedGemViewModel gem)
 {
     gem.PropertyChanged -= SocketedGemsOnPropertyChanged;
     _socketedGems.Remove(gem);
     NewSocketedGem = gem;
 }