Я использую TreeView вместе с HierarchicalDataTemplate для отображения иерархического списка, возвращаемого веб-сервисом. В зависимости от критериев поиска этот список может быть очень длинным и иметь несколько вложенных уровней. Было бы полезно показать пользователю своего рода «карту», чтобы он мог видеть, где в этом списке они находятся относительно верхнего уровня. Модель, использованная для создания иерархии, выглядит следующим образом:
public class IndexEntry
{
public int Score { get; set; }
//More properties that define attributes of this class
//Child objects of the hierarchy are stored in this property
public List<IndexEntry> SubEntries { get; set; }
}
Как видите, иерархия построена с использованием типов ListEntry.
ViewModel выглядит так:
public class IndexEntriesViewModel
{
//TreeView ItemsSource is bound to this collection
public ObservableCollection<IndexEntry> IndexList { get; set; }
//More properties to define the ViewModel
}
Как видите, ItemsSource TreeView будет привязан к ObservableCollection типов IndexEntry. Я не вижу очевидного способа доступа к родительскому объекту, как сейчас. Я рассматриваю возможность добавления в модель другого свойства, которое указывало бы непосредственно на родительский объект этой конкретной записи. В конечном итоге это позволило бы мне идти вверх и вниз по иерархии и получать то, что мне нравится, когда мне это нужно.
Итак, вопрос в том, может ли кто-нибудь придумать лучший способ сделать это? Есть ли в самом TreeView свойство, которое мне не хватает, которое предоставит эту возможность?