//Загрузка библиотеки нодов и постройка списка private void LoadNodesLibrary() { Sheduler.Start(); NodeLibrary.InitializeLibrary(); var categories = NodeLibrary.Nodes.Select(x => x.Category).Distinct().ToList(); foreach (var cat in categories) { var incCat = cat.Split(new char[] { '/' }); var tvs = NodesPanel.Items.OfType <TreeViewItem>().Where(x => ((string)x.Header) == incCat[0]); var asdq = NodesPanel.Items.OfType <TreeViewItem>(); TreeViewItem tvitem = tvs.Count() > 0 ? tvs.First() : null; if (tvitem == null) { tvitem = new TreeViewItem() { Header = incCat[0], Margin = new Thickness(0, 5, 10, 5) }; NodesPanel.Items.Add(tvitem); } var nodes = NodeLibrary.Nodes.Where(x => x.Category == incCat[0]); foreach (var node in nodes) { if (tvitem.Items.OfType <Label>().Where(x => ((string)x.Content) == node.NCName).Count() != 0) { continue; } tvitem.Items.Add(new Label() { Content = node.NCName, Margin = new Thickness(0, 0, 10, 0) }); } string path = incCat[0]; var preTvi = tvitem; for (int i = 1; i < incCat.Length; i++) { path += "/" + incCat[i]; var tvis = preTvi.Items.OfType <TreeViewItem>().Where(x => ((string)x.Header) == path); TreeViewItem tvi = tvis.Count() > 0 ? tvis.First() : null; if (tvi == null) { tvi = new TreeViewItem() { Header = incCat[i], Margin = new Thickness(0, 5, 10, 5) }; preTvi.Items.Add(tvi); } var catNodes = NodeLibrary.Nodes.Where(x => x.Category == path); foreach (var node in catNodes) { if (tvi.Items.OfType <Label>().Where(x => (string)x.Content == node.NCName).Count() != 0) { continue; } tvi.Items.Add(new Label() { Content = node.NCName, Margin = new Thickness(0, 0, 10, 0) }); } preTvi = tvi; } } }
private void Button_Click(object sender, RoutedEventArgs e) { var a = new Sheduler(); a.Start(target.Text); }