private async Task PopulateProjectionsFromGroupAsync()
 {
     await Task.Factory.StartNew(() => {
         CashflowProjectionItems.Clear();
         if (this.cashflowProjectionGroup != null && this.cashflowProjectionGroup.Items != null)
         {
             this.cashflowProjectionGroup.DefaultItems.ToList().ForEach(cpi => CashflowProjectionItems.Add(cpi));
         }
     });
 }
        private void ToggleMode()
        {
            string periodGroup = selectedCashflowProjectionItem.PeriodGroup;

            if (periodGroup == null)
            {
                return;
            }

            // remember items belonging to period group
            var toggleItems = new List <CashflowProjectionItem>();

            int i = 0, startingIndex = -1;

            foreach (var item in CashflowProjectionItems)
            {
                if (item.PeriodGroup == periodGroup)
                {
                    toggleItems.Add(item);
                    if (startingIndex <= 0)
                    {
                        startingIndex = i;
                    }
                }
                i++;
            }

            // remove old items
            foreach (var item in toggleItems)
            {
                CashflowProjectionItems.Remove(item);
            }

            //toggle mode
            this.cashflowProjectionGroup.SwitchMode(periodGroup);

            // add new items
            foreach (var item in this.cashflowProjectionGroup.GetActiveItems(periodGroup))
            {
                CashflowProjectionItems.Insert(startingIndex++, item);
                if (SelectedCashflowProjectionItem == null)
                {
                    SelectedCashflowProjectionItem = item;
                }
            }
        }