我按照本教程(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

希望你能帮我 ;)

谢谢你的提前,