/// <summary>
        /// Called whenever selection changes.
        /// </summary>
        /// <param name="args"></param>
        private void OnSelectionChanged(SelectionChangedEventArgs args)
        {
            if (args.SelectedItems == null)
                return;

            if (this.IsActiveView || args.SourceViewModel == this)
                return;

            Collection<object> sVms = new Collection<object>();
            foreach (BaseModelElementViewModel vm in this.SelectedItems)
            {
                if (vm != null)
                    vm.IsSelected = false;
            }

            foreach (ModelElement element in args.SelectedItems)
            {
                BaseModelElementViewModel foundModel = null;
                foreach (RootNodeViewModel m in this.RootNodes)
                {
                    if (m.Element == element && m.IsElementHolder)
                        foundModel = m;

                    if( foundModel == null )
                        foundModel = m.FindViewModel(element);

                    if (foundModel != null)
                        if( !sVms.Contains(foundModel) )
                            sVms.Add(foundModel);
                }
            }

            foreach (BaseModelElementViewModel vm in sVms)
                vm.IsSelected = true;

            this.selectedVMS = sVms;
        }
        /// <summary>
        /// Called whenever selection changes.
        /// </summary>
        /// <param name="args"></param>
        private void OnSelectionChanged(SelectionChangedEventArgs args)
        {
            if (args.SelectedItems == null)
                return;

            if (args.SelectedItems.Count != 1)
            {
                this.SelectedItem = null;
            }
            else
            {
                foreach(ModelContextViewModel vm in this.ModelContextVMs)
                    if (vm.ModelContext == args.SelectedItems[0] as BaseModelContext)
                    {
                        if (this.SelectedItem != vm)
                            this.SelectedItem = vm;

                        break;
                    }
            }
        }
 /// <summary>
 /// Called whenever selection changes.
 /// </summary>
 /// <param name="args"></param>
 private void OnSelectionChanged(SelectionChangedEventArgs args)
 {
     this.SetSelectedComponents(args.SelectedItems);
 }