Inheritance: Microsoft.Practices.Prism.ViewModel.NotificationObject
		public EntryItemViewModel(Entry entry, TreeViewItemViewModel parent, ManifestEditorViewModel editor, Descriptor descriptor)
			: base(parent)
		{
			if (entry == null)
				throw new ArgumentNullException("entry", "entry is null.");
			if (parent == null)
				throw new ArgumentNullException("parent", "parent is null.");
			if (editor == null)
				throw new ArgumentNullException("editor", "editor is null.");
			if (descriptor == null)
				throw new ArgumentNullException("descriptor", "descriptor is null.");


			_descriptor = descriptor;
			Entry = entry;
			_editor = editor;
			_entryEditor = new EntryEditorViewModel(entry, editor);
		    TreeItemLabel = entry.Name;
		    _entryEditor.PropertyChanged += (_, args) => { if (args.PropertyName == "Name") TreeItemLabel = entry.Name; };
			_collection = parent as IEntryItemCollection;
			if (_collection != null)
			{
				MenuItems = new List<MenuItemViewModel> { new MenuItemViewModel("Remove CI", new DelegateCommand(DoRemove), null) };
			}
			IsExpanded = true;
		}
		protected TreeViewItemViewModel(TreeViewItemViewModel parent)
		{
			_parent = parent;

			_lazyLoadChildren = true;
			_childrenInitialized = false;
			_childrenLoaded = false;
		}
        public EntryItemViewModel(Entry entry, TreeViewItemViewModel parent, ManifestEditorViewModel editor, Descriptor descriptor)
            : base(parent)
        {
            if (entry == null)
            {
                throw new ArgumentNullException("entry", "entry is null.");
            }
            if (parent == null)
            {
                throw new ArgumentNullException("parent", "parent is null.");
            }
            if (editor == null)
            {
                throw new ArgumentNullException("editor", "editor is null.");
            }
            if (descriptor == null)
            {
                throw new ArgumentNullException("descriptor", "descriptor is null.");
            }


            _descriptor   = descriptor;
            Entry         = entry;
            _editor       = editor;
            _entryEditor  = new EntryEditorViewModel(entry, editor);
            TreeItemLabel = entry.Name;
            _entryEditor.PropertyChanged += (_, args) => { if (args.PropertyName == "Name")
                                                           {
                                                               TreeItemLabel = entry.Name;
                                                           }
            };
            _collection = parent as IEntryItemCollection;
            if (_collection != null)
            {
                MenuItems = new List <MenuItemViewModel> {
                    new MenuItemViewModel("Remove CI", new DelegateCommand(DoRemove), null)
                };
            }
            IsExpanded = true;
        }
		private void TreeViewEx_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
		{
		    SelectedTreeViewItem = e.NewValue as TreeViewItemViewModel;
		}
		protected virtual void OnSelectedTreeViewItemChanged(TreeViewItemViewModel oldValue, TreeViewItemViewModel newValue)
		{

		}