这个问题之前已经解决了,但我只是不知道我在网上找到的例子。
我有一个类,比如'ClassA',这个类有2个字符串属性,'Property1'和'Property2'以及IEnumerable,其中'ClassB'也有2个属性。 ClassB列表将全部显示在嵌套树视图中
我希望这些在树视图中显示如下:
-ClassA[0] ClassA.Property1 ClassA.Property2 -ClassA.ClassB Title ClassB[0] ClassB[1] Etc. +ClassA[1] +ClassB[2]
我的理解是,实现这一目标的方法是使用HierarchicalDataTemplates,但我找到的所有示例只告诉我该怎么做:
-ClassA[0] -ClassA.ClassB Title ClassB[0] ClassB[1] Etc. +ClassA[1] +ClassB[2]
我无法弄清楚如何在模板中获取ClassA的属性。我认为它是ClassA类型的DataTemplate,但是没有点击。
非常感谢任何帮助。
谢谢!
答案 0 :(得分:1)
好吧,我回答了我自己的问题,但我认为这不是解决问题的正确方法。
我在树视图上使用了itemtemplate,然后在该模板中创建了另一个树视图,并在其上创建了另一个itemtemplate。
但是,当我查看它并查看HierarchicalDataTemplates时,我可以理解这一点。
WPF:
<TreeView HorizontalAlignment="Left" Name="treeView1" VerticalAlignment="Top">
<TreeView.ItemTemplate>
<DataTemplate>
<TreeViewItem Header="{Binding FileName}">
<TextBlock Text="{Binding MetaData1}"/>
<TextBlock Text="{Binding MetaData2}"/>
<TreeViewItem ItemsSource="{Binding Mappings}" Header="Mappings">
<TreeViewItem.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="17"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Original}" Grid.Column="0"/>
<TextBlock Text="->" Grid.Column="1" Margin="3,0,3,0"/>
<TextBlock Text="{Binding Mapping}" Grid.Column="2"/>
</Grid>
</DataTemplate>
</TreeViewItem.ItemTemplate>
</TreeViewItem>
</TreeViewItem>
</DataTemplate>
</TreeView.ItemTemplate>
</TreeView>
类:
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; }
}
快速实施我的数据结构:
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"
}
}
}
};
如果有人知道我应该如何更好地做到这一点(使用HierachicalDataTemplates和DataTemplates我可以看到这些代码并对此进行改进。