Example #1
0
        private void AttachItem(SortedDictionary <TKey, ObservableCollection <TItem> > searchTree, TItem item)
        {
            var lambdaResult = keySelector.InvokeTagged <SequenceInfo>(item, new SequenceInfo()
            {
                Item = item, SearchTree = searchTree
            });

            lambdaResult.ValueChanged += KeySelectorValueChanged;
            Stack <TaggedObservableValue <TKey, SequenceInfo> > lambdaStack;

            if (!lambdaResults.TryGetValue(item, out lambdaStack))
            {
                lambdaStack = new Stack <TaggedObservableValue <TKey, SequenceInfo> >();
                lambdaResults.Add(item, lambdaStack);
            }
            lambdaStack.Push(lambdaResult);

            ObservableCollection <TItem> itemSequence;

            if (!searchTree.TryGetValue(lambdaResult.Value, out itemSequence))
            {
                itemSequence = new ObservableCollection <TItem>();
                searchTree.Add(lambdaResult.Value, itemSequence);
                manualNotifier.NotifyAddItem(itemSequence);
            }
            itemSequence.Add(item);
        }
Example #2
0
        private void AttachItem(TItem item)
        {
            TaggedObservableValue <TKey, Multiplicity <TItem> > lambdaResult;

            if (!lambdas.TryGetValue(item, out lambdaResult))
            {
                lambdaResult = keySelector.InvokeTagged <Multiplicity <TItem> >(item);
                lambdaResult.ValueChanged += LambdaChanged;
                lambdas.Add(item, lambdaResult);
            }
            lambdaResult.Tag = new Multiplicity <TItem>(item, lambdaResult.Tag.Count + 1);
            ObservableCollection <TItem> sequence;

            if (!searchTree.TryGetValue(lambdaResult.Value, out sequence))
            {
                sequence = new ObservableCollection <TItem>();
                searchTree.Add(lambdaResult.Value, sequence);
                manualRaiseSequences.NotifyAddItem(sequence);
            }
            sequence.Add(item);
        }