Mouse input
The MouseInputSimulator class provides mouse input simulation for Avalonia controls in headless testing.
Basic Mouse Events
var simulator = new MouseInputSimulator();
// Move mouse to position
simulator.MoveTo(control, new Point(100, 100));
// Press mouse button
simulator.ButtonDown(control, MouseButton.Left, new Point(100, 100));
// Release mouse button
simulator.ButtonUp(control, MouseButton.Left, new Point(100, 100));
Click Operations
// Left click
simulator.Click(control, new Point(100, 100));
// Right click (context menu)
simulator.RightClick(control, new Point(100, 100));
// Middle click
simulator.MiddleClick(control, new Point(100, 100));
// Double click
simulator.DoubleClick(control, new Point(100, 100));
// Click with custom button
simulator.Click(control, new Point(100, 100), MouseButton.Middle);
Drag Operations
// Simple drag
simulator.Drag(control,
startPoint: new Point(100, 100),
endPoint: new Point(200, 200),
steps: 10);
// Drag with specific button
simulator.Drag(control,
startPoint: new Point(100, 100),
endPoint: new Point(200, 200),
steps: 10,
button: MouseButton.Left);
// Move through a path
var path = new[]
{
new Point(50, 50),
new Point(100, 100),
new Point(150, 50),
new Point(200, 100)
};
simulator.HoverPath(control, path);
Mouse Wheel
// Scroll up
simulator.Wheel(control, new Vector(0, 1), new Point(200, 150));
// Scroll down
simulator.Wheel(control, new Vector(0, -1), new Point(200, 150));
// Scroll horizontally
simulator.Wheel(control, new Vector(1, 0), new Point(200, 150));
// Smooth scroll (multiple steps)
simulator.SmoothScroll(control,
totalDelta: new Vector(0, -5),
position: new Point(200, 150),
steps: 10);
Hover
// Hover over a position for specified duration
simulator.Hover(control, new Point(100, 100), duration: 500);
// Move to position and wait
simulator.MoveTo(control, new Point(100, 100));
// ... control will process pointer enter events
Mouse State
// Check current position
Point currentPos = simulator.Position;
// Check if button is pressed
bool isLeftDown = simulator.PressedButton == MouseButton.Left;
// Check current modifiers (for Ctrl+Click, etc.)
simulator.Modifiers = KeyModifiers.Control;
simulator.Click(control, new Point(100, 100)); // Ctrl+Click
simulator.Modifiers = KeyModifiers.None;
// Release tracked mouse state between independent interactions.
simulator.Reset();