Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 将任意深度树绑定到TreeView_.net_Wpf_Treeview_Binding - Fatal编程技术网

.net 将任意深度树绑定到TreeView

.net 将任意深度树绑定到TreeView,.net,wpf,treeview,binding,.net,Wpf,Treeview,Binding,我有以下接口(如您所见,我正在稍微调整MVVM模式): 以及将顶层节点设置为窗口的DataContext: IViewModel model = ViewModelFactory.GetTopLevelViewModel(); DataContext = model; 然而,树视图中没有显示任何内容。我在某某和其他地方研究过很多类似的问题,但似乎没有一个能解决我的问题。有几个问题: 为什么我需要设置父窗口的DataContext,而不是树视图本身 为什么树视图中什么都没有出现 我怎么修理它 为

我有以下接口(如您所见,我正在稍微调整MVVM模式):

以及将顶层节点设置为窗口的DataContext:

IViewModel model = ViewModelFactory.GetTopLevelViewModel();
DataContext = model;
然而,树视图中没有显示任何内容。我在某某和其他地方研究过很多类似的问题,但似乎没有一个能解决我的问题。有几个问题:

  • 为什么我需要设置父窗口的
    DataContext
    ,而不是树视图本身
  • 为什么树视图中什么都没有出现
  • 我怎么修理它
  • 为什么我需要设置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 };