В XAML порядок элементов по умолчанию противоположен тому, как они отображаются в разметке (последний элемент в XAML отображается вверху стека).
В качестве теста я написал следующее.
XAML:
<Window x:Class="Order.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Canvas Name="LayoutTest" Margin="0">
<Label Background="Red" Margin="0,0,0,0" Content="Added in XAML"/>
</Canvas>
</Grid>
</Window>
Код:
public MainWindow()
{
InitializeComponent();
for (int i = 0; i < 10; i++)
{
Label lbl = new Label();
lbl.Height = 100d;
lbl.Width = 100d;
lbl.MouseLeftButtonUp += rec_MouseLeftButtonUp;
lbl.Content = "Label number " + i.ToString();
lbl.Background = Brushes.White;
lbl.Foreground = Brushes.Black;
LayoutTest.Children.Add(lbl);
}
}
void rec_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
Label obj = sender as Label;
if (null == obj) return;
obj.Visibility = Visibility.Collapsed;
}
В результате элементы, добавленные в XAML, появляются в нижней части стека в порядке, описанном выше. Элементы, добавленные в коде, отображаются над ними, и их порядок определяется порядком, в котором они были добавлены - первый добавленный элемент находится в нижней части определенного порядка, увеличиваясь в стеке по мере добавления.
Итак, на «дне» стопки находится ярлык
«Добавлено в XAML», за которым следует
«Метка № 0»,
«Метка № 1»,
... до ...
«Ярлык № 9» - самый верхний, сразу видимый элемент.
Беспокоить! Я просто потратил 10 минут, доказывая, что это не так. ;) Ответ Роя Си ниже, вероятно, то, что вы искали, но, если повезет, этот ответ кому-нибудь пригодится.