Workaround:
class CustomTreeView : RadTreeView
{
//Replace the default element with the custom one
protected override RadTreeViewElement CreateTreeViewElement()
{
return new CustomTreeViewElement();
}
//Enable theming for the control
public override string ThemeClassName
{
get
{
return typeof(RadTreeView).FullName;
}
}
}
class CustomTreeViewElement : RadTreeViewElement
{
//Enable themeing for the element
protected override Type ThemeEffectiveType
{
get
{
return typeof(RadTreeViewElement);
}
}
protected override bool ProcessContextMenu(Point location)
{
RadTreeNode node = this.GetNodeAt(location);
if (node == null)
{
RadContextMenu menu = new RadContextMenu();
RadMenuItem item = new RadMenuItem();
item.Text = "Add a root node";
menu.Items.Add(item);
item.Click += item_Click;
TreeViewContextMenuOpeningEventArgs args = new TreeViewContextMenuOpeningEventArgs(node, menu);
OnContextMenuOpening(args);
if (!args.Cancel)
{
menu.Show(this.ElementTree.Control, location);
return true;
}
}
return base.ProcessContextMenu(location);
}
private void item_Click(object sender, EventArgs e)
{
this.Nodes.Add(new RadTreeNode("New root"));
}
}