Wpf 具有附加属性的嵌套TreeView
这个问题以前已经解决了,但我只是没有从网上找到的例子中得到答案 我有一个类,比如“ClassA”,这个类有两个字符串属性,“Property1”和“Property2”,还有一个IEnumerable,其中“ClassB”也有两个属性。ClassB的列表将全部显示在嵌套的树视图中 我想在树状视图中显示这些内容,如下所示: -ClassA[0] ClassA.Property1 ClassA.Property2 -ClassA.ClassB Title ClassB[0] ClassB[1] Etc. +ClassA[1] +ClassB[2] -A类[0] A类财产1 A类物业2 -ClassA.ClassB标题 B类[0] B类[1] 等 +A类[1] +B类[2] 我的理解是,实现这一点的方法是使用HierarchycalDataTemplates,但是我能找到的所有示例都只告诉我如何做: -ClassA[0] -ClassA.ClassB Title ClassB[0] ClassB[1] Etc. +ClassA[1] +ClassB[2] -A类[0] -ClassA.ClassB标题 B类[0] B类[1] 等 +A类[1] +B类[2] 我不知道如何在模板中获取ClassA的属性。我想它应该是ClassA类型上的一个数据模板,但有些东西没有点击 非常感谢您的帮助Wpf 具有附加属性的嵌套TreeView,wpf,treeview,hierarchicaldatatemplate,Wpf,Treeview,Hierarchicaldatatemplate,这个问题以前已经解决了,但我只是没有从网上找到的例子中得到答案 我有一个类,比如“ClassA”,这个类有两个字符串属性,“Property1”和“Property2”,还有一个IEnumerable,其中“ClassB”也有两个属性。ClassB的列表将全部显示在嵌套的树视图中 我想在树状视图中显示这些内容,如下所示: -ClassA[0] ClassA.Property1 ClassA.Property2 -ClassA.ClassB Title ClassB[0]
谢谢 嗯,我回答了我自己的问题,但我认为这不是正确的方式 我在treeview上使用了一个itemtemplate,然后在该模板的内部创建了另一个treeview,上面还有另一个itemtemplate 但是,当我看它与看HierarchycalDataTemplates时,我可以理解这一点 WPF:
课程:
public class ClassA
{
public string MetaData1 { get; set; }
public string MetaData2 { get; set; }
public string FileName { get; set; }
public List<ClassB> Mappings { get; set; }
}
public class ClassB
{
public string Original { get; set; }
public string Mapping { get; set; }
}
公共类ClassA
{
公共字符串元数据1{get;set;}
公共字符串元数据2{get;set;}
公共字符串文件名{get;set;}
公共列表映射{get;set;}
}
公共B类
{
公共字符串原始{get;set;}
公共字符串映射{get;set;}
}
快速实现我的数据结构:
new List<ClassA>
{
new ClassA
{
FileName = "ClassA 1",
MetaData1 = "Prop 1",
MetaData2 = "Prop 2",
Mappings = new List<ClassB>
{
new ClassB
{
Original = "BProp 1",
Mapping = "BProp 2"
}
}
},
new ClassA
{
FileName = "ClassA 2",
MetaData1 = "Prop 1",
MetaData2 = "Prop 2",
Mappings = new List<ClassB>
{
new ClassB
{
Original = "BProp 1",
Mapping = "BProp 2"
}
}
}
};
新列表
{
新甲级
{
FileName=“ClassA 1”,
MetaData1=“Prop 1”,
MetaData2=“Prop 2”,
映射=新列表
{
新B级
{
Original=“BProp 1”,
Mapping=“BProp 2”
}
}
},
新甲级
{
FileName=“ClassA 2”,
MetaData1=“Prop 1”,
MetaData2=“Prop 2”,
映射=新列表
{
新B级
{
Original=“BProp 1”,
Mapping=“BProp 2”
}
}
}
};
如果有人知道我应该如何做得更好的话(使用HierachicalDataTemplates和DataTemplates),我愿意看到这些代码并在此基础上进行改进
new List<ClassA>
{
new ClassA
{
FileName = "ClassA 1",
MetaData1 = "Prop 1",
MetaData2 = "Prop 2",
Mappings = new List<ClassB>
{
new ClassB
{
Original = "BProp 1",
Mapping = "BProp 2"
}
}
},
new ClassA
{
FileName = "ClassA 2",
MetaData1 = "Prop 1",
MetaData2 = "Prop 2",
Mappings = new List<ClassB>
{
new ClassB
{
Original = "BProp 1",
Mapping = "BProp 2"
}
}
}
};