/// <summary>
        /// Called when the 'Entries' list in the shopping cart changes.
        /// </summary>
        private void OnShoppingCartEntriesChanged(ShoppingCart sender, ShoppingCartEntriesChangedEventArgs args)
        {
            if (!_isLoaded)
            {
                return;
            }

            switch (args.Type)
            {
            case ShoppingCartEntriesChangedType.EntryAdded:
                var entryViewModel = new ShoppingCartEntryViewModel(this.ShoppingCart, this.ShoppingCart.Entries[args.Index]);
                _entries.Insert(args.Index, entryViewModel);
                break;

            case ShoppingCartEntriesChangedType.EntryRemoved:
                _entries.RemoveAt(args.Index);
                break;

            case ShoppingCartEntriesChangedType.EntryUpdated:
                _entries[args.Index].Update(this.ShoppingCart.Entries[args.Index]);
                break;

            case ShoppingCartEntriesChangedType.EntriesReset:
            default:
                ResetEntries();
                break;
            }
        }
 /// <summary>
 /// Called when one of the entry's 'remove' button is clicked.
 /// </summary>
 public void OnEntryRemoveClick(ShoppingCartEntryViewModel entryViewModel)
 {
     this.ShoppingCart.Remove(entryViewModel.ProductViewModel.Product);
 }