using Avalonia.Input; using Avalonia.Interactivity; namespace Avalonia.Controls { /// /// Provides event data for the ContextRequested event. /// public class ContextRequestedEventArgs : RoutedEventArgs { private readonly PointerEventArgs? _pointerEventArgs; /// /// Initializes a new instance of the ContextRequestedEventArgs class. /// public ContextRequestedEventArgs() : base(Control.ContextRequestedEvent) { } /// public ContextRequestedEventArgs(PointerEventArgs pointerEventArgs) : this() { _pointerEventArgs = pointerEventArgs; } /// /// Gets the x- and y-coordinates of the pointer position, optionally evaluated against a coordinate origin of a supplied . /// /// /// Any -derived object that is connected to the same object tree. /// To specify the object relative to the overall coordinate system, use a relativeTo value of null. /// /// /// A that represents the current x- and y-coordinates of the mouse pointer position. /// If null was passed as relativeTo, this coordinate is for the overall window. /// If a relativeTo value other than null was passed, this coordinate is relative to the object referenced by relativeTo. /// /// /// true if the context request was initiated by a pointer device; otherwise, false. /// public bool TryGetPosition(Control? relativeTo, out Point point) { if (_pointerEventArgs is null) { point = default; return false; } point = _pointerEventArgs.GetPosition(relativeTo); return true; } } }