private void CreateInstances(TreeViewItem root, NetworkNode node) { if (node.HasTypedIncomingEdges(NetworkEdgeType.IsInstance)) { string str = Utils.ConvertToResourcesType(NetworkEdgeType.IsInstance) + "TemplateKey"; DataTemplate template = Application.Current.TryFindResource(str) as DataTemplate; str = Utils.ConvertToResourcesType(NetworkEdgeType.IsInstance) + "ItemTemplateKey"; DataTemplate itemTemplate = Application.Current.TryFindResource(str) as DataTemplate; TreeViewItem instanceRoot = new TreeViewItem(); instanceRoot.Header = Properties.Resources.InstancesLabel; instanceRoot.Focusable = false; instanceRoot.HeaderTemplate = template; LoadItemState(-1, node, instanceRoot, Properties.Resources.InstancesLabel); root.Items.Add(instanceRoot); foreach (NetworkEdge edge in node.GetTypedIncomingEdges(NetworkEdgeType.IsInstance)) { NetworkNode endNode = edge.StartNode; TreeViewItem nodeRoot = CreateNodeItem(endNode, itemTemplate); LoadItemState(endNode.Id, node, nodeRoot); CreateDescendants(nodeRoot, endNode); instanceRoot.Items.Add(nodeRoot); } } }