예제 #1
0
    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();
        }
예제 #3
0
        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);
        }
예제 #4
0
 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));
 }