The message says you are trying to cast a STRING to a TreeViewItem.
The third line in your code
index = PM_TreeView.Items.Add(ObjReq.Name);
adds a STRING to the Items collection yet the seventh tries to cast this same string to a TreeViewItem
ParentNode = (TreeViewItem)PM_TreeView.Items[index];
Instead of adding a string, add a new TreeViewItem with the Header value you want