gpt4 book ai didi

wpf - 具有其他属性的嵌套TreeView

转载 作者:行者123 更新时间:2023-12-02 04:14:03 25 4
gpt4 key购买 nike

这个问题以前已经解决过,但我只是无法通过网上找到的例子来解决。

我有一个类,可以说“ClassA”,该类具有2个字符串属性,“Property1”和“Property2”,以及一个IEnumerable,其中“ClassB”也具有2个属性。 ClassB的列表将全部显示在嵌套的树形 View 中

我希望这些显示在树状 View 中,如下所示:

-ClassA [0]
ClassA.Property1
ClassA.Property2
-ClassA.ClassB标题
B类[0]
B类[1]
等等。
+ ClassA [1]
+ ClassB [2]

据我了解,完成此操作的方法是使用HierarchicalDataTemplates,但是我可以找到的所有示例仅告诉我该怎么做:

-ClassA [0]
-ClassA.ClassB标题
B类[0]
B类[1]
等等。
+ ClassA [1]
+ ClassB [2]

我无法弄清楚如何在模板中获取ClassA的属性。我认为这将是ClassA类型的DataTemplate,但是没有单击。

任何帮助是极大的赞赏。

谢谢!

最佳答案

好吧,我回答了我自己的问题,但是我认为这不是解决此问题的正确方法。

我在树 View 上使用了一个itemtemplate,然后在该模板内部创建了另一个treeview,并在其上添加了另一个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中,我可以看到该代码并对此进行改进。

关于wpf - 具有其他属性的嵌套TreeView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3668970/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com