У меня есть следующий интерфейс (как вы можете видеть, я немного адаптирую шаблон MVVM):
public interface IViewModel {
string Header { get; }
IEnumerable<IViewModel> Nodes { get; }
}
Я хочу привязать этот тип данных к древовидной структуре с одной вершинойузел и произвольная глубина.Header
- это текст, отображаемый в каждом узле, а Nodes
- дочерние узлы.
У меня есть следующий XAML:
<TreeView ItemsSource="{Binding}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate DataType="{x:Type ViewModel:IViewModel}" ItemsSource="{Binding Nodes}">
<TextBlock Text="{Binding Header}" />
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
и установка верхнего уровняузел к DataContext окна:
IViewModel model = ViewModelFactory.GetTopLevelViewModel();
DataContext = model;
Однако в древовидном представлении ничего не появляется.Я рассмотрел довольно много похожих вопросов по SO и в других местах, но, похоже, ни один из них не решил мою проблему.Несколько вопросов:
- Почему мне нужно установить
DataContext
родительского окна, а не сам TreeView? - Почему в древовидном представлении ничего не появляется?
- Как мне это исправить?