0
我有如下界面(正如你所看到的,我适应MVVM模式了一下):绑定arbitary深度树一个TreeView
public interface IViewModel {
string Header { get; }
IEnumerable<IViewModel> Nodes { get; }
}
我想这个数据类型绑定到一个TreeView ,具有单个顶部节点和任意深度。 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本身? - 为什么树形视图中没有任何东西出现?
- 我该如何解决?
我认为hierarchacaldatatemplate将符合实际的数据类型,而不是接口类型,我可能是错的 – Jimmy 2011-02-15 17:35:53