For this TreeView definition, I want the button background to be black with white font when the TreeItem.Selected property is true. Then, I want the node to go back to a clear background with black font when when that property is false. How do I do this?
@using System.Collections.ObjectModel@using Palmer.Doc.Models@page "/tree"<TelerikButton Primary="true" OnClick="CreateItem">Create item</TelerikButton><TelerikButton Primary="true" OnClick="DeleteItem">Delete item</TelerikButton><TelerikTreeView Data="@TreeData"> <TreeViewBindings> <TreeViewBinding IdField="Id" TextField="Text"> <ItemTemplate> @{ <TelerikButton OnClick="@(() => OnClickHandler(context as TreeItem))">@((context as TreeItem).Text)</TelerikButton> } </ItemTemplate> </TreeViewBinding> </TreeViewBindings></TelerikTreeView>@code{ public class TreeItem { public string Id { get; set; } = $"{Guid.NewGuid()}"; public string Text { get; set; } public string ContextId { get; set; } public ObservableCollection<TreeItem> Items { get; set; } = new ObservableCollection<TreeItem>(); public bool Expanded { get; set; } public bool HasChildren { get; set; } public bool Selected { get; set; } } #region Properties public TreeItem SelectedItem { get; set; } public ObservableCollection<TreeItem> TreeData { get; set; } #endregion #region Event Handlers protected override void OnInitialized() { LoadHierarchical(); } private void OnClickHandler(TreeItem context) { SelectedItem = context; } #endregion #region Methods private void CreateItem() { if (SelectedItem != null) { AddNode(SelectedItem, "New Item"); } } private void DeleteItem() { if (SelectedItem != null) { TreeItem parent = GetById(SelectedItem.ContextId); if (parent != null) { parent.Items.Remove(SelectedItem); SelectedItem = parent; SelectedItem.HasChildren = SelectedItem.Items.Count > 0; SelectedItem.Expanded = SelectedItem.HasChildren; } } } private void LoadHierarchical() { ObservableCollection<TreeItem> roots = new ObservableCollection<TreeItem>() { new TreeItem { Text = "Item 1", Expanded = true }, new TreeItem { Text = "Item 2" } }; AddNode(roots[0], "Item 1 first child"); AddNode(roots[0], "Item 1 second child"); AddNode(roots[1], "Item 2 first child"); AddNode(roots[1], "Item 2 second child"); TreeData = roots; } private void AddNode(TreeItem parent, string childText) { AddNode(parent, new TreeItem() { Text = childText }); } private void AddNode(TreeItem context, TreeItem child) { child.ContextId = context.Id; context.Items.Add(child); context.HasChildren = true; context.Expanded = true; SelectedItem = child; } public TreeItem GetById(string id) { TreeItem result = null; // perform a recursive search starting with the root nodes foreach (var treeItem in TreeData) { result = getById(id, treeItem); if (result != null) break; } return result; } /// <summary> /// Perform a recursive search using the given node /// </summary> /// <param name="id"></param> /// <param name="parent"></param> /// <returns></returns> private TreeItem getById(string id, TreeItem node) { TreeItem result = null; if (node.Id == id) { result = node; } else { foreach (TreeItem child in node.Items) { result = getById(id, child); if (result != null) break; } } return result; } #endregion}