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