private void BackfillParentsForItem(TreeEntry root, TreeItem item)
{
var segments = item.Text.Split('.').Reverse().Where((x, id) => id >= 1).Reverse().ToArray();
var current = root;
var i = 1;
var built = string.Empty;
foreach (var segment in segments)
{
built += "." + segment;
built = built.Trim('.');
var next = current.Children.FirstOrDefault(x => x.Name == segment);
if (next == null)
{
var newItem = new TreeItem { Text = built, Parent = this };
_items.Add(newItem);
var created = new TreeEntry
{
Item = newItem,
Layout = null,
Name = segment,
FullName = built,
Children = new List<TreeEntry>(),
SegmentCount = i
};
current.Children.Add(created);
current = created;
}
else
{
current = next;
}
i++;
}
}