/// <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 }); }