Как настроить структуру данных для привязки динамического списка объектов к древовидному представлению в WPF и C #? - PullRequest
0 голосов
/ 14 июня 2019

Спасибо за просмотр!

Метод CreateFoos () привязан как источник данных в WPF для дерева.Есть ли способ переделать это так, чтобы списки в конструкторе могли быть связаны с CreateFoos ()?

Я понятия не имею, как переделать структуру данных в эти списки, которые заполняются динамически.

public class FooViewModel : INotifyPropertyChanged
    {
        #region Data

        bool? _isChecked = false;
        FooViewModel _parent;

        List<object> Family;
        List<object> child;

        #endregion // Data

        public FooViewModel(List<object> A, List<object> B)
        {
            Family = A;
            child = B;
        }

        #region CreateFoos

        public List<FooViewModel> CreateFoos()
        {
            FooViewModel root = new FooViewModel("Top Wrapper")
            {
                IsInitiallySelected = true,
                Children =
                {
                    new FooViewModel("Family1")
                    {
                        Children =
                        {
                            new FooViewModel("Bob"),
                            new FooViewModel("Jose"),
                            new FooViewModel("Milly"),
                        }
                    },
                    new FooViewModel("Family2")
                    {
                        Children =
                        {
                            new FooViewModel("Susan"),
                            new FooViewModel("Pepper"),
                            new FooViewModel("Gunther"),                            
                        }
                    },
                    new FooViewModel("Family3")
                    {
                        Children =
                        {
                            new FooViewModel("Kim"),
                            new FooViewModel("Beretta"),
                            new FooViewModel("Pedro"),
                        }
                    },
                }
            };

            root.Initialize();
            return new List<FooViewModel> { root };
        }

        FooViewModel(string name)
        {
            this.Name = name;
            this.Children = new List<FooViewModel>();
        }

        void Initialize()
        {
            foreach (FooViewModel child in this.Children)
            {
                child._parent = this;
                child.Initialize();
            }
        }

        #endregion // CreateFoos

        #region Properties

        public List<FooViewModel> Children { get; private set; }

        public bool IsInitiallySelected { get; private set; }

        public string Name { get; private set; }

Как жестко закодированная структура данных FooViewModel может быть заменена динамическими списками в конструкторе?

...