【问题标题】:Nested TreeView with additional properties具有附加属性的嵌套 TreeView
【发布时间】:2010-09-08 14:50:52
【问题描述】:

这个问题之前已经解决了,但我只是没有通过我在网上找到的示例得到它。

我有一个类,比如说“ClassA”,这个类有 2 个字符串属性,“Property1”和“Property2”以及一个 IEnumerable,其中“ClassB”也有 2 个属性。 ClassB 的列表将全部显示在嵌套的树视图中

我希望这些显示在树视图中,如下所示:

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

据我了解,实现此目的的方法是使用 HierarchicalDataTemplates,但是我能找到的所有示例都只告诉我该怎么做:

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

我不知道如何在模板中获取 ClassA 的属性。我认为这将是 ClassA 类型的 DataTemplate,但没有点击。

非常感谢任何帮助。

谢谢!

【问题讨论】:

    标签: wpf treeview hierarchicaldatatemplate


    【解决方案1】:

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

    我在树视图上使用了一个项目模板,然后在该模板内创建了另一个树视图,上面还有另一个项目模板。

    但是,当我查看它与查看 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,我愿意查看该代码并对此进行改进。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-19
      • 2016-01-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多