Когда вы программируете на WPF подразумевается, что визуальная часть является отражением вашего представления данных. Поэтому уровень иерархии выбранный элемент должен находить не среди элементов TreeViewItem, а среди родителей выбранного элемента в соответствии с моделью представления данных.
Пример:
class A
{
public string Name{get;set;}
public A Parent {get;set;}
public IEnumerable<A> Children
{
get
{
return AllItemsOfA.Select(a => a.Parent == this);
}
}
public int Level()
{
int level = 0;
var current = Parent;
while(current != null)
{
current = current.Parent;
level ++;
}
return level;
}
}
Добавив коллекцию таких элементов в TreeView вы у выбранного элемента получите нужный вам уровень иерархии.