public HierarchicalElementViewModel(HierarchicalElementViewModel parentViewModel)
 {
     ParentViewModel   = parentViewModel;
     Subitems          = new ObservableCollection <HierarchicalElementViewModel>();
     AddSubitemCommand = new RelayCommand(Add);
     RemoveCommand     = new RelayCommand(Remove, () => ParentViewModel != null);
 }
        private void AddHierarchicalElement()
        {
            var selectedHierarchicalElement = Manager.SelectedElement as HierarchicalElementViewModel;

            if (selectedHierarchicalElement != null)
            {
                var newItem = new HierarchicalElementViewModel(selectedHierarchicalElement)
                {
                    Name = "Child Element"
                };
                selectedHierarchicalElement.Subitems.Add(newItem);
                newItem.Selected = true;
            }
            else
            {
                var newItem = new HierarchicalElementViewModel(null)
                {
                    Name = "Root Element"
                };
                HierarchicalElements.Add(newItem);
                newItem.Selected = true;
            }
        }