我将尝试解释我一直在尝试做什么,并且尽可能简单地解决它(例如使用汽车)。假设我的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,这真的让我烦恼。
答案 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;
}
}