.net 将任意深度树绑定到TreeView
我有以下接口(如您所见,我正在稍微调整MVVM模式): 以及将顶层节点设置为窗口的DataContext:.net 将任意深度树绑定到TreeView,.net,wpf,treeview,binding,.net,Wpf,Treeview,Binding,我有以下接口(如您所见,我正在稍微调整MVVM模式): 以及将顶层节点设置为窗口的DataContext: IViewModel model = ViewModelFactory.GetTopLevelViewModel(); DataContext = model; 然而,树视图中没有显示任何内容。我在某某和其他地方研究过很多类似的问题,但似乎没有一个能解决我的问题。有几个问题: 为什么我需要设置父窗口的DataContext,而不是树视图本身 为什么树视图中什么都没有出现 我怎么修理它 为
IViewModel model = ViewModelFactory.GetTopLevelViewModel();
DataContext = model;
然而,树视图中没有显示任何内容。我在某某和其他地方研究过很多类似的问题,但似乎没有一个能解决我的问题。有几个问题:
DataContext
,而不是树视图本身TreeView
本身上设置数据上下文:
<TreeView x:Name="tree"...>
为什么没有出现在屏幕上
树景
TreeView
是一个ItemsControl
。为了使其显示某些内容,您需要将其ItemsSource
属性指定给集合
我怎么修理它
例如,您可以将DataContext
设置为IViewModel
项的集合,而不是单个项:
IViewModel model = ViewModelFactory.GetTopLevelViewModel();
tree.DataContext = new IViewModel[] { model };
我认为hierarchacaldatatemplate将匹配实际的数据类型,而不是接口类型,我可能错了
<TreeView x:Name="tree"...>
IViewModel model = ViewModelFactory.GetTopLevelViewModel();
tree.DataContext = model;
IViewModel model = ViewModelFactory.GetTopLevelViewModel();
tree.DataContext = new IViewModel[] { model };