TreeView WPF с несколькими дочерними классами - PullRequest
0 голосов
/ 09 декабря 2018

Я следую этому уроку (https://www.wpf -tutorial.com / treeview-control / treeview-data-binding-множественные шаблоны / ), но моя проблема заключается в следующем: как сделать класс с несколькими детьмиЭлементы?

Я хочу поделиться на своем TreeView большинством моделей из той же базы, разделенных семейством;Ну, я хочу, чтобы семья тоже могла быть детьми другой семьи

Вот мой код модели:

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 и привязка данных не удалась )

Надеюсь, вы можете мне помочь;)

Спасибо за аванс,

...