Kontrolka treeview - tworzyc kompozyt czy po prostu zbindowac kolekcje obiektow

0

Chciałbym pewne dane przedstrawic w postaci kontrolki treeview i zastanawiam sie czy zastosowanie wzorca Composite bedzie adekwatne

powiedzmy ze mam klasy

class Firma
{
 public Nazwa {get;set;}
 public IEnumerable<Pracownik> Pracownicy {get;set;}
}

class Pracownik
{
 public Nazwisko{get;set;}
 public decimal Zarobki {get;set;}
}

Chciałbym w kontrolce TreeView miec mniej wiecej taka strukture

Firmy 2 100000zł
|
|__Firma1 2 25000zł
|    |__Jan Kowalski 10000zł
|    |__Andrzej Nowak 15000zł
|
|__Firma2 1 75000zł
    |__John Smith 75000zł

Czy do tego muszę użyć wzorca Composite i bindować kompozyt do TreeView czy utworzyć jakąś kolekcję List<Firma> Firmy i tą kolekcje bindować do TreeView?

0
class Firma : ITreeViewElementModel
    {
        public string Nazwa {get; set;}
        public IEnumerable<Pracownik> Pracownicy { get; set; }

        public string Name => Nazwa;
        public string Value => throw new NotImplementedException(); //? Przy firmie też jest jakaś kwota
        public eTreeViewElementType TreeViewElementType => eTreeViewElementType.Company;
        public IEnumerable<ITreeViewElementModel> Branch => Pracownicy;
    }

    class Pracownik : ITreeViewElementModel
    {
        public string Nazwisko{get;set;}
        public decimal Zarobki { get; set; }

        public string Name => Nazwisko;
        public string Value => throw new NotImplementedException();
        public eTreeViewElementType TreeViewElementType => eTreeViewElementType.Person;
        public IEnumerable<ITreeViewElementModel> Branch => new ITreeViewElementModel[] { };
    }
    public enum eTreeViewElementType
    {
        Company,
        Person
    }
    public interface ITreeViewElementModel
    {
        string Name { get; }
        string Value { get; }
        eTreeViewElementType TreeViewElementType { get; }
        IEnumerable<ITreeViewElementModel> Branch { get; }
    }

A nie lepiej tak wykorzystując interfejsy?

1 użytkowników online, w tym zalogowanych: 0, gości: 1