Then i hook it up to my RadtreeView by this code
ContextMenuExtender contextMenuExtender = new ContextMenuExtender(uxTreeMyPlaylists);
contextMenuExtender.RightClick +=
new RightClickHandler(contextMenuExtender_RightClick);
then when a rightclick is triggered in my tree im trying to get the RadTreeViewItem that was clicked
but i cant find a way to find it. tried with VisualTreeHelper below
but it dosent work. Can somebody help me?
void contextMenuExtender_RightClick(object sender, RightClickEventArgs e)
{
RadTreeView treeViewItem = (RadTreeView)e.Source;
List<UIElement> hits = System.Windows.Media.VisualTreeHelper.FindElementsInHostCoordinates(e.RelativePoint,e.Source) as List<UIElement>;
}
public class ContextMenuExtender
{
public UIElement ExtendedElement { get; private set; }
public ContextMenuExtender(UIElement extendedElement)
{
this.ExtendedElement = extendedElement;
HtmlPage.Document.AttachEvent("oncontextmenu", this.OnContextMenu);
}
public event RightClickHandler RightClick;
private void OnContextMenu(object sender, HtmlEventArgs e)
{
if (RightClick != null)
{
if (ExtendedElement.IsHitTestVisible)
{
Point clickPoint = new Point(e.OffsetX, e.OffsetY);
List<UIElement> hitElements = new List<UIElement>(System.Windows.Media.VisualTreeHelper.FindElementsInHostCoordinates(clickPoint, ExtendedElement));
if (hitElements.Count > 0)
{
e.PreventDefault();
e.StopPropagation();
RightClick(
this, new RightClickEventArgs(ExtendedElement, clickPoint));
}
}
}
}
}
public delegate void RightClickHandler(object sender, RightClickEventArgs e);
public class RightClickEventArgs
{
public UIElement Source { get; private set; }
public Point RelativePoint { get; private set; }
public Point AbsolutePoint { get; private set; }
internal RightClickEventArgs(UIElement source, Point absolutePoint)
{
this.Source = source;
this.AbsolutePoint = absolutePoint;
this.RelativePoint = GetPosition(Source);
}
public Point GetPosition(UIElement relativeTo)
{
GeneralTransform transform = Application.Current.RootVisual.TransformToVisual(relativeTo);
return transform.Transform(AbsolutePoint);
}
}