>public void DrawHoles() >{ > // Iterate over each HolePattern in the HolePatterns collection... > foreach (HolePattern HolePattern in HolePatterns) > { > // Now iterate over each Hole in the HoleList of the current HolePattern... > foreach (Hole Hole in HolePattern.HoleList) > { > Hole.CanvasX = SketchX0 + (Hole.AbsX * _ZoomScale); > Hole.CanvasY = SketchY0 - (Hole.AbsY * _ZoomScale); > canvas1.Children.Add(Hole.HoleEntity); > } > } >} >Going back to basics on this: another approach would be to add a style to your shape:
<Window x:Class="WpfApplication1.Window17" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window17" Height="300" Width="300"> <Window.Resources> <Style TargetType="Ellipse" x:Key="xxx"> <Setter Property="Stroke" Value="Black"/> <Setter Property="StrokeThickness" Value="1" /> <Style.Triggers> <Trigger Property="IsMouseOver" Value="true" > <Setter Property="Fill" Value="Yellow"/> <Setter Property="StrokeThickness" Value="5" /> <Setter Property="Stroke" Value="Red" /> </Trigger> </Style.Triggers> </Style> </Window.Resources> <Canvas> <Ellipse Style="{StaticResource xxx}" Canvas.Top="10" Canvas.Left="10" Width="40" Height="40" > </Ellipse> </Canvas> </Window>You still have to sneak up on it a bit but it will be obvious when the mousedown will target the item in question - and because you have a temporary fill anywhere within the bounds will count as a hit...