<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/interactivedesigner/2006" mc:Ignorable="d" x:Class="InputExamples.PointHitTest" Width="640" Height="480"> <Window.Resources> <Storyboard x:Key="OnLoaded"/> </Window.Resources> <Window.Triggers> <EventTrigger RoutedEvent="FrameworkElement.Loaded"> <BeginStoryboard x:Name="OnLoaded_BeginStoryboard" Storyboard="{DynamicResource OnLoaded}"/> </EventTrigger> </Window.Triggers> <StackPanel> <Rectangle Fill="Red" Width="200" Height="200" x:Name="RectangleArea"/> <Label d:LayoutOverrides="Height" Width="Auto" Height="28" x:Name="HitLabel" Content="Label"/> </StackPanel> </Window> //File:Window.xaml.cs using System; using System.IO; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Navigation; namespace InputExamples { public partial class PointHitTest { private string hitStatus; public PointHitTest() { this.InitializeComponent(); } protected override void OnInitialized(EventArgs e) { base.OnInitialized(e); CompositionTarget.Rendering += this.CompositionTarget_Rendering; } private void CompositionTarget_Rendering(object sender, EventArgs e) { Point position = Mouse.GetPosition(RectangleArea); hitStatus = "no hit"; VisualTreeHelper.HitTest(RectangleArea,null, new HitTestResultCallback(HitTestResultHandler), new PointHitTestParameters(position) ); this.HitLabel.Content = String.Format("Result of the hit test: {0}", hitStatus); } public HitTestResultBehavior HitTestResultHandler(HitTestResult result) { PointHitTestResult hitResult = (PointHitTestResult)result; hitStatus = String.Format("{0} was hit at this point: {1}", ((FrameworkElement)hitResult.VisualHit).Name, hitResult.PointHit.ToString() ); return HitTestResultBehavior.Continue; } } }