将自定义类元素添加到TreeView

时间:2016-11-07 17:22:02

标签: c# wpf xaml treeview

我将尝试解释我一直在尝试做什么,并且尽可能简单地解决它(例如使用汽车)。假设我的MainWindw.xaml.cs代码中有一个自定义类(也可能有三个以上的元素):

    public class Car {
        public string car_name { get; set; }
        public string car_brand { get; set; }
        public int car_year { get; set; }
    }

现在我想将Car实现为TreeView,它看起来应该是这样的:

    ->car_name
       ->car_brand
       ->car_year

所以当我点击car_name时,它会扩展,car_brand和car_year是它的子元素。我还希望能够添加多个,例如:

    ->car_name
       ->car_brand
       ->car_year
    ->car_name
       ->car_brand
       ->car_year
    ->car_name
       ->car_brand
       ->car_year

我无法弄清楚使用C#将自定义类实现到TreeView的正确方法是什么。我尝试过很多“绑定”的变种。互联网上有很多例子,但是我没有遇到任何真正简化的例子,或者我已经看了太长时间并且有点疯狂而无法看透它。

    <TreeView Name="myTree">
        <TreeViewItem Header="{Binding car_name}">
            <TreeViewItem Header="{Binding car_brand}"/>
            <TreeViewItem Header="{Binding car_year}"/>
        </TreeViewItem>
    </TreeView>

C#因为我想在我想添加一辆新车的时候应该会这样:

    Car mycar1 = new Car({car_name="my car name", car_brand="my car brand", car_year=1999});
    myTree.Add(mycar1);

如果有人能用简单的语言向我解释,我会很高兴。我刚刚开始使用VisualStudio学习C#和XAML,这真的让我烦恼。

1 个答案:

答案 0 :(得分:1)

没有Binding就可以这样简单地完成:

           Car mycar1 = new Car("my car name", "my car brand", 1999);
           TreeViewItem node = new TreeViewItem() { Header = mycar1.car_name};
           node.Items.Add(new TreeViewItem() { Header = mycar1.car_brand });
           node.Items.Add(new TreeViewItem() { Header = mycar1.car_year });
           myTree.Items.Add(node);

每个节点都是汽车名称和您添加品牌和年份的节点,然后将整个节点添加到树中,如上所述。 请注意这是我使用的Car类:

public class Car
{
    public string car_name { get; set; }
    public string car_brand { get; set; }
    public int car_year { get; set; }
    public Car(string name, string brand, int year)
    {
        car_brand = brand;
        car_name = name;
        car_year = year;
    }
}