/// <summary>
 /// 子を削除する
 /// </summary>
 public void RemoveChild(PresetTreeElement child)
 {
     if (Children.Contains(child))
     {
         Children.Remove(child);
         child.Parent = null;
     }
 }
 /// <summary>
 /// モデルとItemから再帰的に子Itemを作成・追加する
 /// </summary>
 private void AddChildrenRecursive(PresetTreeElement model, TreeViewItem item)
 {
     foreach (var childModel in model.Children)
     {
         var childItem = CreateTreeViewItem(childModel);
         item.AddChild(childItem);
         AddChildrenRecursive(childModel, childItem);
     }
 }
        /// <summary>
        /// 子を追加する
        /// </summary>
        public void AddChild(PresetTreeElement child)
        {
            // 既に親がいたら削除
            if (child.Parent != null)
            {
                child.Parent.RemoveChild(child);
            }

            // 親子関係を設定
            Children.Add(child);
            child.Parent = this;
        }
        private void OnEnable()
        {
            // Stateは生成されていたらそれを使う
            if (_treeViewState == null)
            {
                _treeViewState = new TreeViewState();
            }

            // TreeViewを作成
            _treeView = new ExampleTreeView(_treeViewState);
            // 親子関係を適当に構築したモデルを作成
            // IDは任意だが被らないように
            var currentId = 0;
            var root      = new PresetTreeElement {
                Id = ++currentId, Name = "1"
            };

            for (int i = 0; i < 2; i++)
            {
                var element = new PresetTreeElement {
                    Id = ++currentId, Name = "1-" + (i + 1)
                };
                for (int j = 0; j < 2; j++)
                {
                    element.AddChild(new PresetTreeElement {
                        Id = ++currentId, Name = "1-" + (i + 1) + "-" + (j + 1)
                    });
                }

                root.AddChild(element);
            }

            // TreeViewを初期化
            _treeView.Setup(new List <PresetTreeElement> {
                root
            }.ToArray());

            // SearchFieldを初期化
            _searchField = new SearchField();
            _searchField.downOrUpArrowKeyPressed += _treeView.SetFocusAndEnsureSelectedItem;
        }
 /// <summary>
 /// ExampleTreeElementからTreeViewItemを作成する
 /// </summary>
 private TreeViewItem CreateTreeViewItem(PresetTreeElement model)
 {
     return(new TreeViewItem {
         id = model.Id, displayName = model.Name
     });
 }