private static T ParseHierarchyElement <T>( XElement element, TreeItemFactory <T> factory, Dictionary <string, HierarchyData> lookup, T?parent ) where T : TreeItem { T item; HierarchyData data; data = CreateHierarchyData(element, lookup, parent?.Data); item = factory(element, data); if (parent is not null) { parent.Children.Add(item); item.Parent = parent; } foreach (var child in element.Elements()) { ParseHierarchyElement(child, factory, lookup, item); } lookup[data.Name] = data; return(item); }
/// <summary> /// Does a primer search and displays the contents of the WatchDir. Not recursive. /// </summary> public void InitializeTree(TreeItemFactory factory) { if (factory == null) { throw new ArgumentNullException(); } TreeItemFactory = factory; SearchDirectory(); }
protected override void OnInitialized(EventArgs e) { base.OnInitialized(e); var culumnHeaderViewModels = new[] { new ColumnHeaderViewModel("Name"), new ColumnHeaderViewModel("Value"), new ColumnHeaderViewModel("Constant", CellBodyType.CheckBox) }; var samples = new[] { new TreeItem { Name = "Dummy1" }, new TreeItem { Name = "Dummy2" } }; var sampleItemFactory = new TreeItemFactory(); var sampleModelService = new ModelService(samples, sampleItemFactory); var columnPropertyInfos = new ColumnPropertyInfos <TreeItemViewModel>( nameof(TreeItemViewModel.Name), nameof(TreeItemViewModel.Value), nameof(TreeItemViewModel.IsConstant)); var sampleViewModelFactory = new TreeItemViewModelFactory(columnPropertyInfos); var sampleViewModels = samples.Select(sampleViewModelFactory.Create); var tableEditorViewModel = new TableEditorViewModel <TreeItem>( sampleViewModels, culumnHeaderViewModels, sampleModelService, sampleViewModelFactory, new RowHeaderContextMenuInfoService()); this.DataContext = new MainWindowViewModel(tableEditorViewModel); }
public static T ParseHierarchies <T>(string data, TreeItemFactory <T> factory) where T : TreeItem { return(ParseHierarchyElement(XDocument.Parse(data).Root, factory, new Dictionary <string, HierarchyData>(), null)); }