我按照本教程(https://www.wpf-tutorial.com/treeview-control/treeview-data-binding-multiple-templates/)但我的问题是:如何创建多个子类项?
我想在我的TreeView上分享来自同一Base的大多数模型,由Family分隔;好吧,我想要一个家庭也可以成为其他家庭的孩子
这是我的模型代码:
public enum Sex
{
Male,
Female,
Unknow,
}
class Base
{
public int FamilyID { get; set; }
public string ScientificName { get; set; }
public Sex Sex { get; set; }
}
class Family
{
public int ID { get; set; }
public string Name { get; set; }
}
class Snake : Base
{
public VenomType VenomType { get; set; }
}
class Amphibian : Base
{
// nothing now
}
class Lizard
{
// Nothing now
}
在这里我的ViewModels代码:
class FamilyVM : INotifyPropertyChanged
{
private ObservableCollection<Family> families = new ObservableCollection<Family>();
public ObservableCollection<Family> Families
{
get { return families; }
set { families = value; NotifyPropertyChanged(); }
}
public void Load()
{
ObservableCollection<Family> families = new ObservableCollection<Family>();
families.Add(new Family { ID = 1, Name = "Amphibian" });
families.Add(new Family { ID = 2, Name = "Viperidae" });
families.Add(new Family { ID = 3, Name = "Aranae" });
Families = families;
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
class SnakeVM : INotifyPropertyChanged
{
private ObservableCollection<Snake> snakes = new ObservableCollection<Snake>();
public ObservableCollection<Snake> Snakes
{
get { return snakes; }
set { snakes = value; NotifyPropertyChanged(); }
}
public void Load()
{
ObservableCollection<Snake> snakes = new ObservableCollection<Snake>();
snakes.Add(new Snake { FamilyID = 2, ScientificName = "Echis carinatus sochureki", Sex = Sex.Female, VenomType = VenomType.Heamotoxic });
snakes.Add(new Snake { FamilyID = 2, ScientificName = "Echis carinatus sochureki", Sex = Sex.Female, VenomType = VenomType.Heamotoxic });
Snakes = snakes;
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
我的看法:
我必须使用基本型号吗?如何添加模拟测试儿童的结果?目前代码只使用该系列(就像我在上一篇文章中提到的那样:TreeView and databinding failed)
希望你能帮我 ;)
谢谢你的提前,