Из вашего поста кода не совсем понятно, как эллипсы добавляются на холст, но вот небольшой пример, который делает, по сути, то, что вы хотите сделать:
<Grid>
<Canvas x:Name="RootLayer" Width="500" Height="500" />
</Grid>
И в конструкторе кодапозади, создайте несколько эллипсов:
for (int i = 0; i < 10; i++)
{
Ellipse e = new Ellipse
{
Width = 100,
Height = 100,
Fill = new SolidColorBrush(
Color.FromArgb(0xDD,
(Byte) r.Next(255)
(Byte) r.Next(255)
(Byte) r.Next(255))),
Stroke = Brushes.Black,
StrokeThickness = 1,
};
e.MouseUp += new MouseButtonEventHandler(e_MouseUp);
Canvas.SetLeft(e, r.Next(400));
Canvas.SetTop(e, r.Next(400));
RootLayer.Children.Add(e);
}
Обработчик событий для обработки щелчков мыши по эллипсам
void e_MouseUp(object sender, MouseButtonEventArgs e)
{
foreach (UIElement item in RootLayer.Children)
Panel.SetZIndex(item, 0);
Panel.SetZIndex((UIElement)sender, 1);
}
С приведенным выше кодом при каждом щелчке по эллипсу (при наведении мыши вверх) он будетподняться над всеми другими эллипсами на этом холсте.