private IEnumerable <IWordTreeViewItem> CreateItemsFromXml(XmlNode rootNode, IWordTreeViewItem rootNodeItem) { var result = new IWordTreeViewItem[rootNode.ChildNodes.Count]; for (int i = 0; i < rootNode.ChildNodes.Count; i++) { XmlNode node = rootNode.ChildNodes[i]; switch (node.Name) { case WordNode: result[i] = new WordViewModel(node.Attributes[TextAttribute].Value, rootNodeItem, _viewModel.DataService); break; case CategoryNode: var newNode = new WordCategoryViewModel(node.Attributes[TextAttribute].Value, rootNodeItem, _viewModel.DataService); var children = CreateItemsFromXml(node, newNode); newNode.Children = new System.Collections.ObjectModel.ObservableCollection <IWordTreeViewItem>(children); result[i] = newNode; break; default: throw new XmlException($"unknown node name {node.Name}"); } } return(result); }
public WordViewModel(string word, IWordTreeViewItem parent, TreeViewDataService <IWordTreeViewItem> dataService) : base(word, dataService) { if (parent == null) { throw new ArgumentNullException(nameof(parent)); } Parent = parent; RemoveCommand = new BasicCommand(_ => Remove()); }
public WordCategoryViewModel(string header, IWordTreeViewItem parent, TreeViewDataService <IWordTreeViewItem> dataService, bool dragEnabled) : base(header, dataService) { Parent = parent; DragEnabled = dragEnabled; Children = new ObservableCollection <IWordTreeViewItem>(); AddWordToCategoryCommand = new BasicCommand(AddWordToCategory); AddSubcategoryCommand = new BasicCommand(AddSubcategory); StartRenameCommand = new BasicCommand(StartRename); StopRenameCommand = new BasicCommand(StopRename); SortCategoryCommand = new BasicCommand(SortCategory); }
public WordCategoryViewModel(string header, IWordTreeViewItem parent, TreeViewDataService <IWordTreeViewItem> dataService) : this(header, parent, dataService, true) { }