Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.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
C# WPF树状视图复杂的层次结构_C#_Wpf_Mvvm_Treeview_Datatemplate - Fatal编程技术网

C# WPF树状视图复杂的层次结构

C# WPF树状视图复杂的层次结构,c#,wpf,mvvm,treeview,datatemplate,C#,Wpf,Mvvm,Treeview,Datatemplate,在我的代码隐藏中,我有一个可观察的集合,比如ObservableCollection。 我正在尝试创建一个数据模板,以便在树视图中完全按照模型中的定义查看这些数据 public class MainItem { public string MainItemName { get; set; } public List<CategoryDetail> GoodCategories { get; set; } public List<CategoryDetai

在我的代码隐藏中,我有一个可观察的集合,比如ObservableCollection。 我正在尝试创建一个数据模板,以便在树视图中完全按照模型中的定义查看这些数据

public class MainItem
{
    public string MainItemName { get; set; }
    public List<CategoryDetail> GoodCategories { get; set; }
    public List<CategoryDetail> BadCategories { get; set; }
    public List<SubItem> AllSubItems{ get; set; }
}

public class CategoryDetail
{
    public string CatId { get; set; }
    public string  CatName { get; set; }
    public List<SubItem> CatSubItems { get; set; }
    public List<CategoryDetail> CatSubCategories { get; set; }
}

public class SubItem
{
    public int SubItemId { get; set; }
    public string SubItemName { get; set; }
}
public类主项
{
公共字符串MainItemName{get;set;}
公共列表类别{get;set;}
公共列表{get;set;}
公共列表所有子项{get;set;}
}
公共类类别详细信息
{
公共字符串CatId{get;set;}
公共字符串CatName{get;set;}
公共列表CatSubItems{get;set;}
公共列表CatSubCategories{get;set;}
}
公共类子项
{
public int SubItemId{get;set;}
公共字符串子项名称{get;set;}
}

如上图所示,我只取得了部分成功。我迄今为止所取得的进步

<TreeView  Grid.Row="0" ItemsSource="{Binding}">
        <TreeView.ItemTemplate>

            <HierarchicalDataTemplate ItemsSource="{Binding CatSubCategories}">

                <TextBlock Foreground="Red" Text="{Binding MainItemName}" />
                <HierarchicalDataTemplate.ItemTemplate>
                    <HierarchicalDataTemplate ItemsSource="{Binding CatSubItems}" ItemTemplate="{StaticResource IdAndNameInAGridTemplate}">
                        <TextBlock Text="{Binding CatName}" />
                    </HierarchicalDataTemplate>
                </HierarchicalDataTemplate.ItemTemplate>
            </HierarchicalDataTemplate>
        </TreeView.ItemTemplate>
</TreeView>


我到底做错了什么?

MainItem应该只有一组类别。类别具有项目的集合。从您预期的树布局来看似乎很明显。不知道你为什么会有问题。映射和设计的简单关系。一个主数据对象有3个不同的其他数据对象集合(也可以嵌套)。我正在寻找这方面的指导。